65

私はJavaで比較的高速なWebアプリケーションになることを望んでいますが、私が試したフレームワークのほとんど(Apache Wicket、Liftweb)は、非常に多くのセットアップ、構成、および試行を必要とします。 Eclipseですべてをうまくプレイできるようにしながら、Mavenに頭を悩ませてください。週末は、コードの最初の行を作成するところまでたどり着こうとしていました。

Maven、ひどく複雑なディレクトリ構造、または手動で編集する必要のある無数のXMLファイルを含まない単純なJava Webアプリケーションフレームワークを誰かが推奨できますか?

4

33 に答える 33

50

自分では試していませんが、そう思います

http://www.playframework.org/

多くの可能性を秘めている...

PHP と従来の ASP に由来する、これは私にとって有望と思われる最初の Java Web フレームワークです....

元の質問者による編集 - 2011-06-09

アップデートを提供したかっただけです。

私は Play を選びましたが、まさに私が求めていたものでした。構成はほとんど必要なく、すぐに使用できます。物事を可能な限りシンプルに保つことを支持して、いくつかの一般的なJavaのベストプラクティスを避けているという点で珍しいです。

特に、静的メソッドを多用し、Java リフレクション API ではサポートされていない、メソッドに渡される変数の名前のイントロスペクションも行います。

Play の姿勢は、その第一の目標は有用な Web フレームワークであることであり、一般的な Java のベスト プラクティスとイディオムに固執することはそれに次ぐものです。このアプローチは私には理にかなっていますが、Java の純粋主義者はそれを好まないかもしれませ

要約すると、Ruby on Rails のようなフレームワークに匹敵する利便性とシンプルさを備えた Web アプリを Java で構築し、Java のツール (Eclipse など) の利点を生かしたい場合は、Play Framework が最適です。

于 2009-10-25T19:15:57.547 に答える
48

(Spring 3.0 用に更新)

Spring MVCも使用します。

ここからSpringをダウンロードする必要があります

Spring を使用するように Web アプリを構成するには、次のサーブレットをweb.xml

<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>

次に、Spring 構成ファイルを作成する必要があります/WEB-INF/spring-dispatcher-servlet.xml

このファイルの最初のバージョンは、次のように簡単です。

<?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>

Spring は、アノテーションが付けられたクラスを自動的に検出します。@Controller

単純なコントローラーは次のとおりです。

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";
   }
}

そしてその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>

これは、Spring でできることの氷山の一角にすぎません...

お役に立てれば。

于 2008-09-22T20:47:32.303 に答える
28

私は本当にStripesに夢中です。全体のセットアップには、アプリケーションの web.xml への XML のカット アンド ペーストが含まれており、それで作業は終了です。Stripes は設定より規約が優先されるフレームワークであるため、設定は必要ありません。デフォルトの動作をオーバーライドするには、Java 1.5 アノテーションを使用します。ドキュメンテーションは素晴らしいです。チュートリアルを読み、最初のアプリをセットアップするのに約 1 ~ 2 時間を費やしました。

Struts や Spring-MVC との詳細な比較はまだできません。(Struts のように) まだ本格的なものを構築していないためです。アーキテクチャは非常によく。

于 2008-09-22T20:28:13.550 に答える
20

あなたはhttp://grails.org/を探しています

Javaに基づく動的言語であるgroovyを使用してコーディングし、Javaコード、クラス、およびライブラリーと一緒にスムーズに実行します。構文を学ぶのは難しくなく、Javaから遠く離れていません。試してみてください。Webサイトを立ち上げて実行するのに数分かかります。http://grails.org/Installationhttp://grails.org/Quick+Startをフォローするだけです

グリーツ、GHad

于 2008-09-22T19:35:53.100 に答える
8

迅速でシンプルな Web アプリケーションを作成するには、WaveMaker をご覧ください。Dojo/JavaScript ウィジェット用のブラウザー ベースのドラッグ アンド ドロップ デザイナーがあり、バックエンドは 100% Java です。

于 2008-09-22T20:19:02.167 に答える
7

ストライプ : かなり良いです。これに関する本が実用的なプログラマーから出ています: http://www.pragprog.com/titles/fdstr/stripes。XML はありません。Java 1.5 以降が必要です。

タペストリー : 古いバージョン 3.x を試しました。現在のバージョン 5.x はベータ版で、かなり良いと聞いています。

ストライプは、maven を処理し、xml を使用せず、頭をすばやく包み込むという点で優れているはずです。

BR、
~A

于 2008-09-22T20:34:03.897 に答える
6

Grails は Java ではなく、Groovy 向けに作成されています。AppFuse は、いずれか 1 つを昇格させるのではなく、任意の数の Webapp フレームワークを開始するために必要なセットアップ時間を短縮するだけです。

Spring MVC をお勧めします。適切に作成されたチュートリアルに従えば、単純で簡単なモデルが (XML 構成なしで!) 任意のビュー テクノロジに自動的に関連付けられます。

顧客リストに「削除」アクションを追加したいですか? 「delete」という名前のメソッドを顧客コントローラーに追加するだけで、URL /customers/delete に自動配線されます。

リクエスト パラメータをオブジェクトにバインドする必要がありますか? ターゲット オブジェクトのインスタンスをメソッドに追加するだけで、Spring MVC はリフレクションを使用してパラメーターをバインドし、最初からクライアントが厳密に型指定されたオブジェクトを渡した場合と同じくらい簡単にロジックを記述できるようにします。

強制的な MVC の分業にうんざりしていませんか? メソッドが void を返すようにし、サーブレットのライターに直接応答を書き込むだけです。

于 2008-09-22T20:10:09.460 に答える
5

Apache Wicket、Liftweb)は、非常に多くのセットアップと構成を必要とします

私は同意しません。すべてのプロジェクトにWicketを使用し、振り返ることはありません。Wicketを使用するための完全な環境をセットアップするのに1時間もかからず、セットアップにそれほど時間はかかりません。

于 2008-09-24T00:52:29.553 に答える
5

Stripes Frameworkは優れたフレームワークです。必要な構成は、web.xml に数行を貼り付けることだけです。

これは、非常に単純なリクエスト ベースの Java Web フレームワークです。

于 2008-09-22T20:25:23.417 に答える
5

私は Spring MVC が好きです。2.5 の機能を使用すると、関連する XML はほとんどありません。

于 2008-09-22T20:18:45.413 に答える
5

Ninja Web Framework をご覧ください。

これは、Rails の伝統に基づく純粋な Java MVC フレームワークです。xml ベースの構成を使用せず、すぐに開始するために必要なすべての機能 (セッション管理、セキュリティ管理、html レンダリング、json レンダリングと解析、xml レンダリングと解析) を備えています。また、組み込みのテスト環境も備えており、従来のサーブレット コンテナーと 100% 互換性があります。

ただし、Maven を使用しますが、Maven を正しく使用すると、ソフトウェア開発が非常に簡単になります。また、任意の Ide をすぐに使用することもできます :)

ちなみに、Ninja の開発は非常に生産的です。コードに変更を加えて、すぐに結果を確認してください。

チェックアウト: http://www.ninjaframework.org .

于 2013-06-07T09:25:23.550 に答える
4

昔ながらのサーブレットとwinstoneサーブレットコンテナを書くのが好きです。そこから、実際のフレームワークではなく、必要に応じてテンプレート(速度、XSLTなど)とDBアクセス(休止状態、トルクなど)ライブラリを追加します。

于 2008-09-22T19:35:12.930 に答える
3

アパッチクリックを試す

これは Wicket に似ていますが、はるかに生産的で習得が容易です。

于 2010-02-01T21:51:04.030 に答える
2

Struts、Tapestry 3/4、JSF、JBoss Seam、GWTで多くの苦痛な経験をした後、私は今のところWicketを使い続けます。Wicket Bench for Eclipseは便利ですが、100%完全ではありませんが、それでも便利です。TomcatにデプロイするためのMyEclipseプラグインはaceです。Mavenは一度だけデプロイする必要はありません。変更はTomcatに自動的にコピーされます。魔法。

私の提案:Wicket 1.4、MyEclipse、Subclipse、Wicket Bench、Tomcat6。セットアップには1時間ほどかかりますが、そのほとんどはtomcatとEclipseプラグインをダウンロードすることです。

ヒント:Wicket Benchライブラリは使用せず、Wicket1.4ライブラリをプロジェクトに手動でインストールしてください。

このサイトは私がhttp://ratearear.co.ukを書くのに約2時間かかりました-仕事からそこに行かないでください!! そしてこれは約3日間の作業ですhttp://tnwdb.com

幸運を。ティム

于 2008-09-23T10:43:04.807 に答える
2

web4jツールは、それ自体がシンプルで簡単であると売り込んでいます。それについてのいくつかのポイント:

  • 単一の xml ファイル (すべてのサーブレットで必要な web.xml ファイル) を使用します。
  • Maven (またはその他のサードパーティ製ツール/jar) への依存なし
  • フルスタック、オープンソース (BSD)
  • フルスタックの Java フレームワークの中で最小のクラス数
  • プレーン テキスト ファイルに配置された SQL
  • 不変オブジェクトの使用を奨励する
  • 最小限のツールセットが必要 (JSP/JSTL、Java、SQL)
于 2009-10-27T00:42:03.070 に答える
2

CRUD を簡単に実行し、簡単なプロトタイプ アプリケーションを作成したい場合は、Grails を使用することをお勧めします。Eclipse との相性も抜群です。http://grails.org/Tutorialsにある「初めての Grails アプリケーションをビルドする」チュートリアルに従うと、1 時間以内に独自のアプリケーションを起動して実行できます。

于 2009-12-14T23:03:04.613 に答える
2

pom.xmlをあまり変更する必要がない限り、maven + eclipseを機能させることの何が大したことなのか、私には本当にわかりません:)

Maven を使用するほとんどのフレームワークには、スタブ プロジェクトを生成できる Maven アーキタイプがあります。

したがって、基本的に手順は次のとおりです。

  1. Mavenをインストールする
  2. M2_REPO クラスパス変数を Eclipse に追加
  3. アーキタイプでプロジェクトを生成する
  4. プロジェクトをEclipseにインポート

Wicket に関しては、maven なしでは使用できない理由はありません。Maven の優れた点は、すべての依存関係を処理するため、その必要がないことです。一方、やりたいことが数ページのプロトタイプ作成だけである場合、Wicket はやり過ぎになる可能性があります。しかし、アプリケーションが成長した場合、最終的には、フォーム、リンク、またはページが追加されるたびに Wicket の利点が示され続けるでしょう :)

于 2008-09-23T09:11:43.417 に答える
2

JRapidを試すことができます。ドメイン駆動設計を使用してアプリケーションを定義すると、Web アプリの完全なスタックが生成されます。既知のオープン ソース フレームワークを使用し、すぐに使用できる非常に優れた UI を生成します。

于 2010-11-26T01:39:36.310 に答える
2

IMO の正解は次の 2 点に依存します。 1. 作成する Web アプリケーションの目的は何ですか。あなたはそれを早く書きたいと私たちに言っただけで、あなたが実際にやろうとしていることではありません. 例えば。データベースが必要ですか?ある種のビジネス アプリですか (ヒント: 「足場」で検索してみてください)。..またはゲーム?..または、sthgを試しているだけですか?2. 現在最もよく知っているフレームワークは何ですか? 多くの場合、最も時間がかかるのは、ドキュメントを読んで、物事が (実際に) どのように機能するかを理解することです。すぐにやりたい場合は、すでによく知っていることに固執してください。

于 2008-09-23T10:18:01.933 に答える
2

Tapestry 5 は、maven アーキタイプを使用して非常に迅速にセットアップできます。Tapestry 5 のチュートリアルを参照してください: http://tapestry.apache.org/tapestry5/tutorial1/

于 2008-09-22T23:29:39.497 に答える
1

AppFuseでは使用していません。JavaWeb開発に伴う厄介なセットアップを容易にするように設計されています。

于 2008-09-22T19:42:57.497 に答える
1

Vaadinを試してみてください!非常にシンプルで、UI も簡単に操作できます。www.vaadin.com

于 2011-08-04T16:48:47.273 に答える
1

キャッスルフレームワーク

http://maven.castleframework.org/nexus/content/repositories/releases/

maven を使用してインストールします。

于 2011-06-27T13:21:11.053 に答える
1

先日、本当に軽量な Java Web フレームワークを見つけました。

それは Jodd と呼ばれ、Spring に期待される多くの基本機能を提供しますが、1 MB 未満の非常に軽いパッケージで提供されます。

http://jodd.org/

于 2012-06-07T23:42:55.650 に答える
1

私は JSP、サーブレット、JSTL を使い続けるつもりです。一緒に働いていたいくつかの企業で Web フレームワークを 12 年以上扱ってきた後、私はいつも古き良き JSP に戻っていることに気づきます。はい、いくつかのフレームワークが自動的に行うことを自分で書く必要があることがいくつかあります。しかし、正しくアプローチし、サーブレットの上にいくつかの基本的なユーティリティを構築すると、最高の柔軟性が得られ、やりたいことを簡単に実行できます。どのフレームワークでも書くことの本当の利点は見つかりませんでした。そして、私は探し続けます。

上記のすべての回答を見ると、適切で規則的なフレームワークが 1 つも存在しないことも意味します。

于 2013-06-05T09:49:10.047 に答える
1

Wavemakerを試すhttp://wavemaker.com無料で使いやすい。WaveMaker で見栄えの良い Java アプリケーションを構築するための学習曲線は、わずか数週間です!

于 2010-10-01T08:21:59.283 に答える
1

activeweb もご覧ください。そのシンプルで軽量で、私が好きな他のいくつかのもの(guice、maven ...)を利用しています。そのコントローラーは、json、Html、プレーンテキスト、pdf、画像など、必要なものをすべて提供できます...安らかなコントローラーを作成し、注釈を使用して、コントローラーメソッドが受け入れる http メソッド (POST、GET、...) を決定することもできます。

于 2012-07-28T10:43:29.433 に答える
0

DWRを試しましたか?http://directwebremoting.org

于 2008-09-22T19:43:48.913 に答える
0

Oracle ADF http://www.oracle.com/technology/products/jdev/index.html

于 2009-10-25T19:23:53.760 に答える
0

最近、非常に有望なAribaWeb Framework を見つけました。優れた機能 (AJAX も含む) と優れたドキュメントを提供します。Groovy/Java で書かれており、Tomcat-Server も含まれています。に入ろうとすると本当に頭がおかしくなりました。

于 2010-10-01T08:36:33.370 に答える
0

これを試してください: http://skingston.com/SKWeb

いくつかの機能と改善を加えることもできますが、シンプルで機能します。

于 2012-06-23T09:26:51.747 に答える
0

Java Web アプリの一般的な特性は、通常、Web サーバーも Java を実行することを意味するサーブレットを使用することです。これは、知覚される複雑さ、私見に貢献します。しかし、パフォーマンスに影響を与えることなく、「1 つのことをきちんと行う」という伝統的な Unix スタイルで Java アプリケーションを構築することができます。

SCGIを使用することもできます。これは FastCGI よりもはるかに簡単です。最初にそれを試してみます。しかし、それがうまくいかない場合:

Java で FastCGI アプリケーションを作成する方法

  1. 空の作業ディレクトリを作成して入力します
  2. 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. ここで、devkit に小さなパッチを適用する必要があります (175 行目のオペレーター==を置き換える<=か、このスクリプトを使用して実行します)。

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

  6. テスト アプリを作成しますTinyFCGI.java(以下のソース)。
  7. すべてをコンパイルします: javac **/*.java(**おそらく でのみ動作しzshます)
  8. FastCGI サーバーを起動します: java -DFCGI_PORT=9884 TinyFCGI(バックグラウンドで実行したままにします)
  9. サーバーを使用するように Apache などを設定します。

    • mod_proxy_fcgiApache 2.4 を使用すると、次のよう に使用できます。
      1. Ubuntu を使用して、この PPAを使用して Apache 2.4 にアップグレードします。
      2. mod を有効にします。sudo a2enmod proxy_fcgi
      3. /etc/apache2/conf-enabled/your_site.conf以下の内容で作成
      4. アパッチを再起動します。sudo apache2ctl restart
  10. これで、次の Web アプリケーションにアクセスできます。http://localhost/your_site

  11. 以下ベンチマーク結果

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>

ベンチマーク結果

仕事

$ ./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

包囲

$ 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
于 2013-02-22T21:48:41.233 に答える
0

Apache Clickもお勧めします。10 分間のテストに合格した場合 (クイック スタート ガイドを読むのにかかる時間だと思います)、あなたは戻ってこないでしょう!

よろしく、

ジルベルト

于 2012-01-11T18:37:44.530 に答える