私はJavaの比較的速いWebアプリケーションになることを望んでいますが、私が試したほとんどのフレームワーク(Apache Wicket、Liftweb)は非常に多くのセットアップ、設定、および試行を必要としますEclipseでニースをプレイするためにすべてを取得しながら、Mavenに頭を包みます。最初のコード行を書くポイントにたどり着くために週末全体を過ごしました。
誰もが、Maven、恐ろしく複雑なディレクトリ構造、または手動で編集する必要のある無数のXMLファイルを含まない単純なJava webappフレームワークを推奨できますか?
自分で試していないが、私は思う
多くの可能性を秘めています...
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が最適です。
(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でできることに関する氷山の一角にすぎません...
お役に立てれば。
私はreallyStripes に溝入れしています。全体のセットアップには、アプリのweb.xmlへのカットアンドペーストXMLが含まれています。 Stripesは設定より規約のフレームワークであるため、設定は必要ありません。デフォルトの動作をオーバーライドするには、Java 1.5アノテーションを使用します。ドキュメントは素晴らしいです。チュートリアルを読んで最初のアプリをセットアップするのに1〜2時間かかりました。
StrutsやSpring-MVCとの詳細な比較はまだできません。まだフルスケールを構築していないので(Strutsと同じように)、そのレベルにスケールするようですアーキテクチャは非常によく。
あなたは http://grails.org/ を探しています
Javaに基づいた動的言語であるgroovyでコーディングし、Javaコード、クラス、ライブラリと一緒にスムーズに実行されます。構文は習得も難しくもありません。 Javaから遠く離れて、試してみて、Webサイトを立ち上げて実行するのに数分かかります。 http://grails.org/Installation および http:// grails .org/Quick + Start
グリーツ、GHad
迅速でシンプルなWebアプリケーションの構築については、WaveMakerをご覧ください。 Dojo/JavaScriptウィジェット用のブラウザーベースのドラッグアンドドロップデザイナーがあり、バックエンドは100%Javaです。
ストライプ:かなり良い。これに関する本は実用的なプログラマーから出てきました: http://www.pragprog.com/titles/fdstr/stripes 。 XMLはありません。 Java 1.5以降。
タペストリー:古いバージョン3.xを試しました。現在のバージョン5.xはベータ版で、かなり良いと言われています。
ストライプは、Mavenを処理し、XMLを使用せず、高速で頭を包むという点で優れているはずです。
BR、
〜A
GrailsはJavaではなくGroovy用に作成されています。 AppFuseは、いずれかのWebappフレームワークをプロモートするのではなく、任意の数のWebappフレームワークを開始するために必要なセットアップ時間を短縮するだけです。
Spring MVCをお勧めします。よく書かれたチュートリアルに従うと、シンプルで簡単なモデルが自動的に(XML構成なしで)任意のビューテクノロジーに自動接続されます。
顧客リストに「削除」アクションを追加したいですか? 「delete」という名前のメソッドをカスタマーコントローラーに追加するだけで、URL/customers/deleteに自動接続されます。
リクエストパラメータをオブジェクトにバインドする必要がありますか?ターゲットオブジェクトのインスタンスをメソッドに追加するだけで、Spring MVCはリフレクションを使用してパラメーターをバインドし、クライアントが最初に厳密に型指定されたオブジェクトを渡すのと同じくらい簡単にロジックを記述します。
すべての強制されたMVC分業にうんざりしていませんか?メソッドがvoidを返すようにし、それがあなたのものであれば、応答をサーブレットのWriterに直接書き込みます。
Apache Wicket、Liftweb)は非常に多くのセットアップ、構成が必要です
私は同意しません、私はすべてのプロジェクトにWicketを使用し、振り返ることはありません! Wicketで動作する完全な環境をセットアップするのに1時間もかかりません。
私はSpring MVCが好きです。2.5の機能を使用すると、XMLはほとんど関与しません。
Stripes Framework は優れたフレームワークです。関係する唯一の構成は、web.xmlに数行を貼り付けることです。
Java Webフレームワークに基づく非常に単純なリクエストです。
Ninja Web Frameworkをご覧ください。
これは純粋なJava Railsの伝統のMVCフレームワークです。xmlベースの構成を使用せず、セッション管理、セキュリティ管理、htmlレンダリング、 jsonのレンダリングと解析、xmlのレンダリングと解析、組み込みのテスト環境も備えており、従来のサーブレットコンテナと100%互換性があります。
ただし、Mavenを使用しますが、Mavenを正しく使用すると、ソフトウェア開発が非常に簡単になります。また、すぐに任意のIdeを使用できます:)
ちなみに-Ninjaの開発は本当に生産的です-コードを変更し、すぐに結果を確認してください。
チェックアウト: http://www.ninjaframework.org 。
古いプレーンなサーブレットを書くのが好きです+ - winstone servlet containerそこから、実際のフレームワークではなく、テンプレート(速度、XSLTなど)およびDBアクセス(休止状態、トルクなど)ライブラリを必要に応じてボルトで固定します。
Pom.xmlをあまり変更する必要がない限り、maven + Eclipseを動作させることの大したことは本当にわかりません。
Mavenを使用するほとんどのフレームワークには、スタブプロジェクトを生成できるmavenアーキタイプがあります。
したがって、基本的に手順は次のとおりです。
Wicketに関しては、Mavenなしでは使用できない理由はありません。 Mavenの良いところは、すべての依存関係を処理するため、必要がないことです。一方、あなたがしたい唯一のことは、いくつかのページのプロトタイプを作成することである場合、Wicketはやり過ぎになることがあります。しかし、アプリケーションが成長した場合、最終的に、追加されたフォーム、リンク、またはページごとにWicketの利点が表示され続けます:)
試す Apacheクリック
Wicketに似ていますが、はるかに生産的で学習しやすいです。
Grailsは、CRUDを簡単に実行し、簡単なプロトタイプアプリケーションを作成する場合に使用する方法です。EclipseでもNiceをプレイします。こちらの「最初のGrailsアプリケーションの構築」チュートリアル http://grails.org/Tutorials を実行すると、1時間以内に独自のアプリケーションを起動して実行できます。
IMOの正解は、次の2つに依存します。1.作成するWebアプリケーションの目的は何ですか?あなたはそれを早く書きたいと言っただけで、実際にやろうとしていることではありません。例えば。データベースが必要ですか?それはある種のビジネスアプリですか(ヒント:「足場」を検索するかもしれません)? ..またはゲーム? ..またはsthgを試しているだけですか? 2.現在最もよく知っているフレームワークは何ですか?多くの場合、最も時間がかかるのはドキュメントを読んで、物事が(実際に)どのように機能するかを理解することです。すぐに実行したい場合は、すでによく知っていることに固執します。
JRapid を試すことができます。ドメインドリブンデザインを使用して、アプリケーションを定義し、Webアプリの完全なスタックを生成します。既知のオープンソースフレームワークを使用し、非常にニースですぐに使用できるUIを生成します。
Tapestry 5は、Mavenアーキタイプを使用して非常に迅速にセットアップできます。 Tapestry 5チュートリアルを参照してください: http://tapestry.Apache.org/tapestry5/tutorial1/
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
幸運を。ティム
web4j ツールは、それ自体をシンプルで簡単なものとして販売しています。それについてのいくつかのポイント:
JSP、サーブレット、JSTLに固執すると思います。私が働いたいくつかの会社でWebフレームワークを12年以上扱った後、私はいつも古き良きJSPに戻っています。はい、いくつかのフレームワークが自動的に行ういくつかのことを自分で書く必要があります。しかし、正しくアプローチし、サーブレットの上にいくつかの基本的なユーティリティを構築すると、最高の柔軟性が得られ、必要なことを簡単に実行できます。私はどのフレームワークにも書くことの本当の利点を見つけられませんでした。そして、私は見続けています。
上記のすべての答えを見ることは、良いフレームワークが存在しないことを意味します。
キャッスルフレームワーク
http://maven.castleframework.org/nexus/content/repositories/releases/
mavenを使用してインストールします。
AppFuse で使用したことはありません。Java Web Development。
vaadinをお試しください!非常にシンプルで、UIも簡単に操作できます! www.vaadin.com
activeweb もご覧ください。シンプルで軽量で、私が好きな他のいくつかのもの(guice、maven ...)を利用します。そのコントローラーは、json、Html、プレーンテキスト、pdf、画像など、必要なものをすべて提供できます。
wavemakerをお試しください http://wavemaker.com 無料で使いやすい。見栄えの良いJava WaveMakerでアプリケーションを構築するための学習曲線はほんの数週間です!
先日、非常に軽量なJava Webフレームワークが見つかりました。
Joddと呼ばれ、Springに期待される基本の多くを提供しますが、1MB未満の非常に軽いパッケージで提供されます。
DWRを試しましたか? http://directwebremoting.org
これを試してください: http://skingston.com/SKWeb
さらにいくつかの機能と改善を行うことができますが、それは簡単で動作します。
Java Webアプリケーションの一般的なプロパティは、通常サーブレットを使用することです。これは通常、WebサーバーもJavaを実行することを意味します。これは、知覚される複雑さ、IMHOの一因となります。ただし、パフォーマンスを低下させることなく、「1つのことを実行して適切に実行する」という従来のUnixスタイルでJavaアプリを構築できます。
[〜#〜] scgi [〜#〜] を使用することもできます。これはFastCGIよりもずっと簡単です。最初にそれを試してみます。しかし、うまくいかない場合:
wget --quiet --recursive --no-parent --accept=Java --no-directories --no-Host-directories "http://www.fastcgi.com/devkit/Java/"
_mkdir -p com/fastcgi
_mv *.Java com/fastcgi
_次に、開発キットに小さなパッチを適用する必要があります(175行目の演算子_==
_を_<=
_に置き換えるか、このスクリプトを使用して実行します)。
echo -e "175c\nif (count <= 0) {\n.\nw\nn\nq" | ed -s com/fastcgi/FCGIInputStream.Java
TinyFCGI.Java
_を作成します(以下のソース)javac **/*.Java
_(_**
_はおそらくzsh
でのみ動作します)Java -DFCGI_PORT=9884 TinyFCGI
_(バックグラウンドで実行したままにします)今すぐセットアップしますサーバーを使用するApache:
mod_proxy_fcgi
_を使用できます。Sudo a2enmod proxy_fcgi
_/etc/Apache2/conf-enabled/your_site.conf
_を作成しますSudo Apache2ctl restart
_これで、_http://localhost/your_site
_でwebappにアクセスできます
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
_
最近、非常に有望に見える AribaWeb フレームワークを見つけました。優れた機能(AJAXも含む)、優れたドキュメントを提供します。 Groovy/Javaで書かれており、Tomcat-Serverも含まれています。 Springに入ろうとすると、本当に腹が立ちました。