web-dev-qa-db-ja.com

誰でも簡単なJava web-appフレームワークを推奨できますか?

私はJavaの比較的速いWebアプリケーションになることを望んでいますが、私が試したほとんどのフレームワーク(Apache Wicket、Liftweb)は非常に多くのセットアップ、設定、および試行を必要としますEclipseでニースをプレイするためにすべてを取得しながら、Mavenに頭を包みます。最初のコード行を書くポイントにたどり着くために週末全体を過ごしました。

誰もが、Maven、恐ろしく複雑なディレクトリ構造、または手動で編集する必要のある無数のXMLファイルを含まない単純なJava webappフレームワークを推奨できますか?

65
sanity

自分で試していないが、私は思う

http://www.playframework.org/

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

phpと従来のaspから来て、それは最初のJava Webフレームワークです。

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

更新を提供したかっただけです。

私はPlayを使いましたが、まさにそれが私が求めていたものでした。設定はほとんど必要なく、そのまま使用できます。一般的なJavaのベストプラクティスを避けて、できるだけシンプルに保つことを支持するという点で異常です。

特に、静的メソッドを多用し、メソッドに渡される変数の名前を内省します。これはJavaリフレクションAPIではサポートされていません。

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

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

50
opensas

(Spring 3.0用に更新)

Spring MVC も使用します。

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

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でできることに関する氷山の一角にすぎません...

お役に立てれば。

48
toolkit

私はreallyStripes に溝入れしています。全体のセットアップには、アプリのweb.xmlへのカットアンドペーストXMLが含まれています。 Stripesは設定より規約のフレームワークであるため、設定は必要ありません。デフォルトの動作をオーバーライドするには、Java 1.5アノテーションを使用します。ドキュメントは素晴らしいです。チュートリアルを読んで最初のアプリをセットアップするのに1〜2時間かかりました。

StrutsやSpring-MVCとの詳細な比較はまだできません。まだフルスケールを構築していないので(Strutsと同じように)、そのレベルにスケールするようですアーキテクチャは非常によく。

28
John Stauffer

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

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

グリーツ、GHad

20
GHad

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

8
killdash10

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

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

ストライプは、Mavenを処理し、XMLを使用せず、高速で頭を包むという点で優れているはずです。

BR、
〜A

7
anjanb

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

Spring MVCをお勧めします。よく書かれたチュートリアルに従うと、シンプルで簡単なモデルが自動的に(XML構成なしで)任意のビューテクノロジーに自動接続されます。

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

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

すべての強制されたMVC分業にうんざりしていませんか?メソッドがvoidを返すようにし、それがあなたのものであれば、応答をサーブレットのWriterに直接書き込みます。

6
Kyle

Apache Wicket、Liftweb)は非常に多くのセットアップ、構成が必要です

私は同意しません、私はすべてのプロジェクトにWicketを使用し、振り返ることはありません! Wicketで動作する完全な環境をセットアップするのに1時間もかかりません。

6
Sami

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

5
bpapa

Stripes Framework は優れたフレームワークです。関係する唯一の構成は、web.xmlに数行を貼り付けることです。

Java Webフレームワークに基づく非常に単純なリクエストです。

5
ScArcher2

Ninja Web Frameworkをご覧ください。

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

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

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

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

5
Ra_

古いプレーンなサーブレットを書くのが好きです+ - winstone servlet containerそこから、実際のフレームワークではなく、テンプレート(速度、XSLTなど)およびDBアクセス(休止状態、トルクなど)ライブラリを必要に応じてボルトで固定します。

4
Aaron Maenpaa

Pom.xmlをあまり変更する必要がない限り、maven + Eclipseを動作させることの大したことは本当にわかりません。

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

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

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

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

3
Matej Knopp

試す Apacheクリック

Wicketに似ていますが、はるかに生産的で学習しやすいです。

3
Andrej Fink

Grailsは、CRUDを簡単に実行し、簡単なプロトタイプアプリケーションを作成する場合に使用する方法です。EclipseでもNiceをプレイします。こちらの「最初のGrailsアプリケーションの構築」チュートリアル http://grails.org/Tutorials を実行すると、1時間以内に独自のアプリケーションを起動して実行できます。

2
Drupad Panchal

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

2
emu

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

2
Christian

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

2
Paul Croarkin

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

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

ヒント:Wicket Benchライブラリを使用しないでください。手動でWicket 1.4ライブラリをプロジェクトにインストールしてください。

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

幸運を。ティム

2
Tim Squires

web4j ツールは、それ自体をシンプルで簡単なものとして販売しています。それについてのいくつかのポイント:

  • 単一のxmlファイル(すべてのサーブレットに必要なweb.xmlファイル)を使用します
  • maven(または他のサードパーティのツール/ jar)に依存しません
  • フルスタック、オープンソース(BSD)
  • フルスタックのクラスの最小数Javaフレームワーク
  • プレーンテキストファイルに配置されたSQL
  • 不変オブジェクトの使用を推奨します
  • 必要な最小限のツールセット(JSP/JSTL、Java、SQL)
2
John O

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

上記のすべての答えを見ることは、良いフレームワークが存在しないことを意味します。

1
Ronen Morecki

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

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

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

1
Marcel Luna

AppFuse で使用したことはありません。Java Web Development。

1
davetron5000

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

1
stavrosma

activeweb もご覧ください。シンプルで軽量で、私が好きな他のいくつかのもの(guice、maven ...)を利用します。そのコントローラーは、json、Html、プレーンテキスト、pdf、画像など、必要なものをすべて提供できます。

1
joshua

wavemakerをお試しください http://wavemaker.com 無料で使いやすい。見栄えの良いJava WaveMakerでアプリケーションを構築するための学習曲線はほんの数週間です!

1
Aurelio

先日、非常に軽量なJava Webフレームワークが見つかりました。

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

http://jodd.org/

1
Hakkar
0
user188658

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

0

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

さらにいくつかの機能と改善を行うことができますが、それは簡単で動作します。

0
Shane

Java Webアプリケーションの一般的なプロパティは、通常サーブレットを使用することです。これは通常、WebサーバーもJavaを実行することを意味します。これは、知覚される複雑さ、IMHOの一因となります。ただし、パフォーマンスを低下させることなく、「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. 次に、開発キットに小さなパッチを適用する必要があります(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:

    • Apache 2.4を使用すると、次のように_mod_proxy_fcgi_を使用できます。
      1. Ubuntuを使用して、つまり this PPA を使用してApache 2.4にアップグレードします
      2. Modを有効にします:_Sudo a2enmod proxy_fcgi_
      3. 以下の内容で_/etc/Apache2/conf-enabled/your_site.conf_を作成します
      4. Apacheを再起動します:_Sudo Apache2ctl restart_
  10. これで、_http://localhost/your_site_でwebappにアクセスできます

  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

_$ ./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
_
0
Janus Troelsen

最近、非常に有望に見える AribaWeb フレームワークを見つけました。優れた機能(AJAXも含む)、優れたドキュメントを提供します。 Groovy/Javaで書かれており、Tomcat-Serverも含まれています。 Springに入ろうとすると、本当に腹が立ちました。

0
cuh

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

よろしく、

ジルベルト

0
Gilberto