it-swarm-eu.dev

Může někdo doporučit jednoduchý Java web-app framework?

Snažím se začít na tom, co doufám, že bude relativně rychlá webová aplikace v Javě, ale většina rámců, které jsem vyzkoušela (Apache Wicket, Liftweb), vyžaduje tolik nastavení, konfigurace a snahy zabalím si hlavu kolem Maven, zatímco dostaneš celou věc hrát Nice s Eclipse, že jsem strávil celý víkend, jen se snažím dostat do bodu, kdy píšu svůj první řádek kódu!

Může někdo doporučit jednoduchý webový rámec pro web Java, který nezahrnuje Maven, neskutečně komplikované adresářové struktury nebo nespočet XML souborů, které je třeba ručně upravovat?

65
sanity

Nezkoušel jsem to sám, ale myslím

http://www.playframework.org/

má mnoho možností ...

pocházející z php a klasického asp, je to první webový rámec Java, který mi zní slibně.

Editovat podle původního dotazovatele - 2011-06-09

Jen jsem chtěl poskytnout aktualizaci.

Šel jsem s Play a bylo to přesně to, o co jsem požádal. Vyžaduje jen velmi malou konfiguraci a funguje jen z krabice. Je neobvyklé, že se vyhýbá některým běžným zvyklostem v Javě ve prospěch udržení co nejjednodušších věcí. 

Zvláště to dělá těžké použití statických metod, a dokonce dělá nějakou introspection na jménech proměnných předaných k metodám, něco ne podporovaný Java reflexe API.

Hrát je postoj, že jeho prvním cílem je být užitečným webovým rámcem, a držet se společných osvědčených postupů a idiomů v jazyce Java je sekundární. Tento přístup má smysl pro mě, ale Java puristé nemusí mít rád, a bude lepší-off s Apache Wicket .

Stručně řečeno, pokud chcete vytvořit webovou aplikaci s pohodlím a jednoduchostí srovnatelnou s rámcem, jako je Ruby on Rails, ale v jazyce Java a s využitím nástrojů Java (např. Eclipse), pak je Play Framework skvělou volbou.

50
opensas

(Aktualizováno pro jaro 3.0)

Jdu s Spring MVC stejně.

Musíte stáhnout jaro z zde

Chcete-li nakonfigurovat webovou aplikaci, aby použila aplikaci Spring, přidejte do souboru web.xml následující servlet

<web-app>
    <servlet>
        <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

Pak musíte vytvořit soubor jarního konfiguračního souboru /WEB-INF/spring-dispatcher-servlet.xml

Vaše první verze tohoto souboru může být tak jednoduchá jako:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
        http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

   <context:component-scan base-package="com.acme.foo" />    
   <mvc:annotation-driven />

</beans>

Jaro pak automaticky detekuje třídy s poznámkou @Controller

Jednoduchý regulátor je pak:

package com.acme.foo;

import Java.util.logging.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/person")
public class PersonController {

    Logger logger = Logger.getAnonymousLogger();

    @RequestMapping(method = RequestMethod.GET)
    public String setupForm(ModelMap model) {
        model.addAttribute("person", new Person());
        return "details.jsp";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String processForm(@ModelAttribute("person") Person person) {
        logger.info(person.getId());
        logger.info(person.getName());
        logger.info(person.getSurname());
        return "success.jsp";
   }
}

A details.jsp

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<form:form commandName="person">
<table>
    <tr>
        <td>Id:</td>
        <td><form:input path="id" /></td>
    </tr>
    <tr>
        <td>Name:</td>
        <td><form:input path="name" /></td>
    </tr>
    <tr>
        <td>Surname:</td>
        <td><form:input path="surname" /></td>
    </tr>
    <tr>
        <td colspan="2"><input type="submit" value="Save Changes" /></td>
    </tr>
</table>
</form:form>

To je jen špička ledovce s ohledem na to, co může jaro udělat ...

Snad to pomůže.

48
toolkit

Já jsem {opravdu rýhování do pruhy . Úplné nastavení obsahuje některé vyjmuté a vložené XML do web.xml aplikace a pak jste pryč. Není nutná žádná konfigurace, protože Stripes je rámec pro konformní konfiguraci. Překročení výchozího chování je provedeno prostřednictvím anotací jazyka Java 1.5. Dokumentace je skvělá. Strávil jsem asi 1-2 hodiny čtení tutoriálu a nastavení mé první aplikace.

Nemohu zatím provést důkladné srovnání s Strutsem nebo Spring-MVC, protože jsem v něm ještě nevytvořil plnou velikost (jak jsem měl v Struts), ale vypadá to, že by se změnil na takovou úroveň architekturu docela dobře.

28
John Stauffer

Hledáš http://grails.org/

Kódujete ji pomocí groovy, dynamického jazyka založeného na jazyce Java a běží hladce spolu s kódem jazyka Java, třídami a knihovnami. Syntaxe není těžké se naučit ani daleko od Javy. Zkuste to, je to pár minut, než se dostanete na web a běží. Stačí sledovat http://grails.org/Installation a http://grails.org/Quick+Start

Greetzi, GHade

20
GHad

Podívejte se na WaveMaker pro vytvoření rychlé, jednoduché webové aplikace. Mají prohlížeč založený na drag-and-drop návrháři pro widgety Dojo/JavaScript a backend je 100% Java.

8
killdash10

Pruhy: docela dobře. kniha o tom vyšla z pragmatických programátorů: http://www.pragprog.com/titles/fdstr/stripes . Žádné XML. Vyžaduje Java 1.5 nebo novější.

tapisérie: vyzkoušeli starou verzi 3.x. Řekl jsem, že aktuální verze 5.x je v Beta a docela dobrá.

Pruhy by měly být lepší, pokud jde o péči o maven, žádný xml a omotání hlavy kolem rychle.

BR,
[.] - A

7
anjanb

Grails je napsán pro Groovy, ne Java. AppFuse pouze zkracuje čas potřebný k získání jakéhokoliv počtu Webapp frameworků, spíše než podporovat některý z nich.

Doporučil bych Jarní MVC. Poté, co budete následovat dobře napsané tutoriály, budete mít k dispozici jednoduchý, snadno použitelný model (bez konfigurace XML!) Do libovolné technologie zobrazení, která se vám líbí. 

Chcete do seznamu zákazníků přidat akci „odstranit“? Stačí přidat metodu s názvem "smazat" k vašemu zákaznickému řadiči, a je to autowired na adresu URL/customers/delete. 

Potřebujete svázat parametry požadavku s objektem? Stačí přidat instanci cílového objektu do vaší metody a program Spring MVC použije reflexi, aby svázal vaše parametry, takže psaní logiky bude stejně snadné, jako kdyby klient předal objekt s typem, který začal silně typizovat.

Nemocný ze všech nucených dělení práce MVC? Prostě nechte svou metodu vrátit se neplatnou a napište svou odpověď přímo do Spisovaře servletu, pokud je to vaše věc.

6
Kyle

Apache Wicket, Liftweb) vyžadují tolik nastavení, konfiguraci

Nesouhlasím, používám Wicket pro všechny mé projekty a nikdy jsem se neohlédl zpět! Netrvá moc času na nastavení, ani hodinu na nastavení plného prostředí pro práci s Wicket ..

6
Sami

Mám rád Spring MVC, pomocí 2.5 funkce je velmi málo zapojených XML.

5
bpapa

Rámec Stripes je výborný rámec. Jedinou použitou konfigurací je vložení několika řádků do web.xml. 

Je to velmi přímočarý webový rámec založený na požadavku Java.

5
ScArcher2

Podívejte se na Ninja Web Framework.

Jedná se o čistě Java MVC framework v tradici Rails. Nepoužívá žádnou konfiguraci založenou na XML a má vše, co potřebujete, abyste mohli hned začít: Správa relací, správa zabezpečení, vykreslování html, vykreslování a analýza v jazyce json, vykreslování a analýza XML. Je také vybaven vestavěným testovacím prostředím a je 100% kompatibilní s tradičními nádobami na servlety.

Používá Maven, i když - ale Maven používá správně software vývoj super jednoduchý. To vám také umožní použít jakýkoliv Ide hned:

Mimochodem - rozvoj Ninja je opravdu produktivní - provádět změny kódu a okamžitě vidět výsledky.

Podívejte se na: http://www.ninjaframework.org .

5
Ra_

Líbí se mi psaní starých servletů + winstone servlet kontejner. Odtamtud jsem se přišrouboval na šablonování (rychlost, XSLT, atd.) A DB přístup (hibernace, točivý moment, atd.) Knihoven, jak je potřebuji, spíše než jít do skutečného rámce.

4
Aaron Maenpaa

Opravdu nevidím, co je to velký problém s tím, jak dostat maven + Eclipse do práce, pokud nebudete muset měnit pom.xml příliš mnoho :)

Většina rámců, které uživatel maven má maven archetypy, které mohou generovat stub projektu.

Takže v podstatě by kroky měly být:

  1. Nainstalujte maven
  2. Přidejte proměnnou třídy M2_REPO do Eclipse
  3. Generujte projekt s archetypem
  4. Import projektu do Eclipse

Pokud jde o Wicket, není důvod, proč byste to nemohli použít bez maven. Pěkná věc o maven je, že se stará o všechny závislosti, takže nemusíte. Na druhou stranu, pokud je jediná věc, kterou chcete udělat, je prototyp pár stránek, než Wicket může být overkill. Pokud by ale vaše aplikace rostla, výhody služby Wicket by se stále zobrazovaly s každým přidaným formulářem, odkazem nebo stránkou :)

3
Matej Knopp

Zkuste Apache Click

Je to jako branka, ale mnohem produktivnější a snadno se učí.

3
Andrej Fink

Grails je způsob, jak jít, pokud chcete dělat CRUD snadno a vytvořit rychlý prototyp aplikace, hraje Nice s Eclipse stejně. Postupujte podle návodu 'Build your first Grails application' zde http://grails.org/Tutorials a můžete být v provozu a provozovat vlastní aplikaci za méně než hodinu.

2
Drupad Panchal

Správná odpověď IMO závisí na dvou věcech: 1. Jaký je účel webové aplikace, kterou chcete psát? Řekli jste nám, že chcete psát rychle, ale ne to, co se vlastně snažíte udělat. Např. potřebuje databázi? Je to nějaká obchodní aplikace (tip: možná hledat "scaffolding")? .. nebo hru? ... nebo experimentujete se sthg? 2. Jaké rámce právě znáte právě teď? Co často trvá nejvíce času, je čtení dokumentů a zjištění, jak věci fungují. Pokud to chcete udělat rychle, držte se věcí, které již dobře znáte.

2
emu

Můžete dát JRapid zkusit. Pomocí aplikace Domain Driven Design definujete svou aplikaci a generuje celý zásobník pro webovou aplikaci. Používá známé open source rámce a generuje velmi pěkné a připravené uživatelské rozhraní.

2
Christian

Tapestry 5 lze nastavit velmi rychle pomocí maven archetypů. Viz tutoriál Tapestry 5: http://tapestry.Apache.org/tapestry5/tutorial1/

2
Paul Croarkin

Po mnoha bolestných zkušenostech s Strutsem, Tapestry 3/4, JSF, JBoss Seamem, GWT budu teď držet Wicket. Wicket Bench for Eclipse je šikovný, ale ne 100% kompletní, přesto užitečný. Plugin MyEclipse pro nasazení do Tomcat je eso. Ne Maven se nasadí pouze jednou, změny jsou automaticky kopírovány do Tomcatu. Magie.

Můj návrh: Wicket 1.4, MyEclipse, Subclipse, Wicket Bench, Tomcat 6. Nastavení bude trvat hodinu, ale většina z nich bude stahovat pluginy Tomcat a Eclipse. 

Tip: Nepoužívejte Wicket Bench libs, ručně nainstalujte Wicket 1.4 libs do projektu.

Tyto stránky mi trvalo asi 2 hodiny na to, abych napsal http://ratearear.co.uk - nejdou tam z práce !! A tohle je asi 3 dny práce http://tnwdb.com

Hodně štěstí. Tim 

2
Tim Squires

Web4j nástroj trhy samy o sobě jako jednoduché a snadné. Některé body:

  • používá jediný soubor XML (soubor web.xml vyžadovaný všemi servlety)
  • žádná závislost na Maven (nebo jiném nástroji třetí strany/jar)
  • plný zásobník, open source (BSD)
  • nejmenší počet tříd libovolného rámce Java 
  • SQL umístěné ve formátu prostého textu 
  • podporuje použití neměnných objektů
  • minimální sada nástrojů (JSP/JSTL, Java, SQL)
2
John O

Myslel bych, že se držím JSP, servletů a JSTL. Po více než 12 letech zabývajících se webovými frameworky v několika společnostech, se kterými jsem pracoval, vždy nacházím své vlastní návraty k dobrému starému JSP. Ano existuje několik věcí, které musíte napsat sami, že některé rámce se dělají automaticky. Ale pokud k němu přistoupíte správně a vytvoříte základní nástroje na svých servletech, získáte nejlepší flexibilitu a můžete dělat, co jste kdy udělali. Nenašel jsem skutečné výhody, abych mohl psát v jakémkoli rámci. A já se dívám dál.

Pohled na všechny výše uvedené odpovědi také znamená, že neexistuje žádný skutečný rámec, který by byl dobrý a pravidla.

1
Ronen Morecki
1
Marcel Luna

Nepoužíval jsem to AppFuse je navržen tak, aby usnadnil ošklivé nastavení, které přichází s Java Web Development.

1
davetron5000

zkuste Vaadin! Velmi jednoduché a budete moci pracovat s uživatelským rozhraním snadno! www.vaadin.com

1
stavrosma

Podívejte se také na activeweb . jeho jednoduché, lehké a využívá několik dalších věcí, které mám rád (guice, maven ...). Její regulátory mohou sloužit cokoliv, co potřebujete, včetně json, html, prostého textu, pdf, obrázků ... Můžete udělat klidný regulátor a dokonce použít anotace k určení, které metody http (POST, GET, ...) řídicí metoda akceptuje.

1
joshua

zkuste Wavemaker http://wavemaker.com Free, snadné použití. Křivka učení pro vytváření skvěle vypadajících Java aplikací s WaveMakerem je jen pár týdnů!

1
Aurelio

Našel jsem opravdu lehký webový rámec Java druhý den.

Jmenuje se Jodd a dává vám mnoho základů, které byste očekávali od jara, ale ve skutečně lehkém balíčku, který je <1MB.

http://jodd.org/

1
Hakkar
0
user188658

Vyzkoušeli jste DWR? http://directwebremoting.org

0

Zkuste toto: http://skingston.com/SKWeb

Mohlo by to být s některými dalšími funkcemi a vylepšeními, ale je to jednoduché a funguje.

0
Shane

Společnou vlastností Java webových aplikací je, že obvykle používají servlety, což obvykle znamená, že webový server také spouští Javu. To přispívá k vnímané složitosti, IMHO. Ale můžete si vytvořit Java aplikace v tradičním stylu Unixu "udělat jednu věc a udělat to dobře", aniž byste trpěli výkonem.

Můžete také použít SCGI , je to mnohem jednodušší než FastCGI. Zkoušel jsem to jako první. Ale pokud to nevyjde:

Jak napsat aplikaci FastCGI v jazyce Java

  1. Vytvořte prázdný pracovní adresář a zadejte jej
  2. Stáhněte si devkit FastCGI: wget --quiet --recursive --no-parent --accept=Java --no-directories --no-Host-directories "http://www.fastcgi.com/devkit/Java/"
  3. mkdir -p com/fastcgi
  4. mv *.Java com/fastcgi
  5. Nyní musíte na devkit aplikovat malou patch (nahradit operátor == s <= na řádku 175 nebo použít tento skript k tomu):

    echo -e "175c\nif (count <= 0) {\n.\nw\nn\nq" | ed -s com/fastcgi/FCGIInputStream.Java

  6. Vytvořit testovací aplikaci, TinyFCGI.Java (níže uvedený zdroj)
  7. Zkompilujte vše: javac **/*.Java (** bude pravděpodobně fungovat pouze v zsh)
  8. Spusťte server FastCGI: Java -DFCGI_PORT=9884 TinyFCGI (nechte jej běžet na pozadí)
  9. Nyní nastaveno např. Apache pro použití serveru:

    • Pomocí Apache 2.4 můžete použít mod_proxy_fcgi takto:
      1. Použití Ubuntu, upgrade na Apache 2.4 s použitím tohoto PPA
      2. Povolit mod: Sudo a2enmod proxy_fcgi
      3. Vytvořte /etc/Apache2/conf-enabled/your_site.conf s obsahem níže
      4. Restartovat Apache: Sudo Apache2ctl restart
  10. Nyní můžete přistupovat na webovou stránku ve http://localhost/your_site

  11. Výsledky benchmarků níže

TinyFCGI.Java

import com.fastcgi.FCGIInterface;
import Java.io.*;
import static Java.lang.System.out;

class TinyFCGI {
    public static void main (String args[]) {
        int count = 0;
        FCGIInterface fcgiinterface = new FCGIInterface();
        while(fcgiinterface.FCGIaccept() >= 0) {
            count++;
            out.println("Content-type: text/html\n\n");
            out.println("<html>");
            out.println(
                "<head><TITLE>FastCGI-Hello Java stdio</TITLE></head>");
            out.println("<body>");
            out.println("<H3>FastCGI-HelloJava stdio</H3>");
            out.println("request number " + count +
                               " running on Host "
                               + System.getProperty("SERVER_NAME"));
            out.println("</body>");
            out.println("</html>");
        }
    }
}

your_site.conf

<Location /your_site>
  ProxyPass fcgi://localhost:9884/
</Location>

Výsledky benchmarků

wrk

$ ./wrk -t1 -c100 -r10000 http://localhost/your_site 
Making 10000 requests to http://localhost/your_site
  1 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     3.58s    13.42s    1.06m    94.42%
    Req/Sec     0.00      0.00     0.00    100.00%
  10000 requests in 1.42m, 3.23MB read
  Socket errors: connect 0, read 861, write 0, timeout 2763
  Non-2xx or 3xx responses: 71
Requests/sec:    117.03
Transfer/sec:     38.70KB

ab

$ ab -n 10000 -c 100 localhost:8800/your_site
Concurrency Level:      100
Time taken for tests:   12.640 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      3180000 bytes
HTML transferred:       1640000 bytes
Requests per second:    791.11 [#/sec] (mean)
Time per request:       126.404 [ms] (mean)
Time per request:       1.264 [ms] (mean, across all concurrent requests)
Transfer rate:          245.68 [Kbytes/sec] received

obležení

$ siege -r 10000 -c 100 "http://localhost:8800/your_site"
** SIEGE 2.70
** Preparing 100 concurrent users for battle.
The server is now under siege...^C
Lifting the server siege...      done.
Transactions:              89547 hits
Availability:             100.00 %
Elapsed time:             447.93 secs
Data transferred:          11.97 MB
Response time:              0.00 secs
Transaction rate:         199.91 trans/sec
Throughput:             0.03 MB/sec
Concurrency:                0.56
Successful transactions:       89547
Failed transactions:               0
Longest transaction:            0.08
Shortest transaction:           0.00
0
Janus Troelsen

Nedávno jsem našel AribaWeb Framework, který vypadá velmi slibně. Nabízí dobrou funkčnost (i AJAX), dobrou dokumentaci. napsaný v Groovy/Java a dokonce zahrnuje Tomcat-Server. Snažím se dostat do Spring mě opravdu rozzlobilo. 

0
cuh

Doporučuji Apache Click stejně. Pokud projdete testem deset minut (myslím, že je čas, který budete mít, abyste si přečetli Quick Start Guide ), nevrátíte se !

Pozdravy,

Gilberto

0
Gilberto