【java】jdk8も出るし ..
[2ch|▼Menu]
98:>>53
14/05/17 21:23:21.32 C6+8ucAK.net
前言撤回w よく調査したら、独自Viewを持つJSF2以外は簡単に連携できそう

とりあえず自作コンテナ or Jersey(EE標準)で利用可能な方向に修正しようと思う
SpringMVCやPlayでもそのまま動かせると思うが、触れないで置く

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.ruler.markup.api.Page;
import org.ruler.markup.api.Source;
import org.ruler.markup.api.Canvas;

@Source(file="/xml/template.xml")
@Path("/hello")
public class HelloWorld extends Page {

@GET
@Produces(MediaType.TEXT_HTML)
public String sayHello(){
String html = super.draw();
return html;
}

@Source
Canvas canvas = (node) -> {
node.setAttr("style", "color:FFFFFF;");
node.addText("Hello World");
};
}

99:>>53
14/05/18 00:29:13.30 LWas9+0T.net
そのさい、多少APIを変更するのは避けられない

Responseを乗っ取れないようなので
いったん丸ごと一つの文字列にしなければならなくなる
無駄に大きい文字列結合は結構コストになる

それでもDI、コンバータ、バリデータが全部流用できるのが大きいが

100:>>53
14/05/18 17:37:20.86 LWas9+0T.net
JAX-RS v2.0 を試そうとApache CXFを試したが、hello worldも実行できず断念
Glassfish(Jersey)やJBoss(JBoss Rest Easy)はtomcatで使いたいので断念

JAX-RS v1.1 しか使えないが、jarも少なくてコンパクトなApache Winkで調査中〜

101:デフォルトの名無しさん
14/05/18 19:26:31.34 TTQj//9Y.net
>>53
よくわかんねーや、仕様を日本語で書いてくれ。

102:>>53
14/05/18 21:25:44.60 LWas9+0T.net
javadocとかhtml書くのも大変なのよ
javadocは日本語と英語を併記しようとして失敗した
チュートリアルも日本語がおかしいかもしれない

もしくは、もっと全体的な概要のことだろうか?

103:デフォルトの名無しさん
14/05/18 21:29:41.51 N+11ThYv.net
>>102
そうだよ、ぱっとみてなにやってんの?てなかんじ

104:デフォルトの名無しさん
14/05/18 21:30:57.47 N+11ThYv.net
それとDOMが遅いのは知ってるよね?

105:>>53
14/05/18 22:53:36.54 LWas9+0T.net
どれを指していってる?

106:>>53
14/05/18 23:02:35.40 LWas9+0T.net
その指摘はたぶん半分正しい。

XML(REST, AJAX)だとDOMは遅くない
HTMLだとDOMは遅い。

なぜならHTMLはほとんどが静的なデータの塊であって、
動的でない部分をDOMで保有していると、直列な文字列へと変換する無駄が生じる。

チュートリアル1では、全てをDOMで操作しているので、たしかに処理に無駄がある。
従ってチュートリアル1は最も自由度の高いAPIであるが、HTMLではなくXML(REST, AJAX)向きだ。

107:>>53
14/05/18 23:08:29.27 LWas9+0T.net
これを踏まえたうえで、チュートリアル02, 03を見てほしい。
Canvasというクラスがでてくる。Canvasに指定されたノードは、動的な領域である。

逆説的に言えば、それ以外の領域は静的であるということ。
実は、内部で静的な領域を最適化している。

Node.classにはjavadocに載っていないが、onReady()というメソッドがあって、
あらかじめ直列化された(変わりに変更不能になった)文字列へと最適化している

108:>>53
14/05/18 23:18:39.38 LWas9+0T.net
具体的に書くと、Nodeは通常以下のデータを持っている

String タグ
HashMap<String, String> 属性
List<Node> 子ノード

コレを連結して < + タグ + 属性="属性値" + > </ + タグ + >を生成する。
静的な領域として登録されたNodeは、次のように固定される

String 開始タグ <div class="xxx" onclick="xxx">
String 終了タグ </div>
List<Node> 子ノード

従ってDOMは自動的に、最適な形式で最適化されるのだ

109:>>53
14/05/18 23:21:28.16 LWas9+0T.net
ちなみに、このonReady()というメソッドはサーバー起動時に行われる
初期化の中で実行され、アプリ開発者には触れないようにパッケージアクセスになっている

110:>>53
14/05/18 23:29:41.69 LWas9+0T.net
そんなわけで、計測していないが、JSPでタグライブラリ使うよりは
むしろ早いんじゃないかと思う。

JSPだとBeanUtilsとかでリフレクション使うが、
こちらはまったくリフレクションと無縁だし。

111:>>53
14/05/19 01:30:36.99 sKL+/ft2.net
そーいえば、バグを修正してからソースアップしてなかったや

112:>>53
14/05/19 23:11:24.30 sKL+/ft2.net
質問してた人は分かってくれたのだろーか?
ま、いっかー♪

113:デフォルトの名無しさん
14/05/19 23:14:52.36 tS67yV1L.net
わかんねーよ、まあいいよ

114:>>53
14/05/20 12:43:37.30 6S2+5F+I.net
このフレームワークは、JSPを代替するものである。他はあってもオマケなのさ
SpringMVCといったモダンなフレームワークやJSP/Servletをそもそもほとんど知らないと
さすがに厳しいだろうね

115:デフォルトの名無しさん
14/05/20 13:29:36.59 01pyNPJw.net
.どうでもいいけど^2、大きくでたね、恥ずかしい。

116:>>53
14/05/20 20:12:46.72 6S2+5F+I.net
どうでもいいなら最初から質問しないこと
そして>>104のような知ったかをかまさないことだな

117:デフォルトの名無しさん
14/05/20 20:41:00.48 PNoH4CCh.net


118:デフォルトの名無しさん
14/05/21 08:29:43.45 5ztNVRYW.net
スルースキルなさすぎ

119:>>53
14/05/23 02:03:54.24 a5qO5SrY.net
既存コンテナで使えるようにすると自作コンテナを切り捨てる必要がある
両方でそのまま使えるように、嫌だけど自作コンテナのAPIを再設計するわ

120:デフォルトの名無しさん
14/05/23 09:52:47.95 ghW3/pyp.net
GoogleがProject Araとかスマートウォッチとかやってるのに
オラクルはラズベリーパイでembeddedアプリとか、言ってて恥ずかしくないのだろうか

121:デフォルトの名無しさん
14/05/30 02:26:09.40 tZAWFEUT.net
テンプレート指定でpojoぶち込んで変換する程度なのになぜそんな難しい事だと思うんだろう・・・
ちゃんと考えたらオプショナルなライブラリとして切り出せるよ

122:デフォルトの名無しさん
14/05/30 06:22:55.92 6rGA/Qk9.net
JAX-RSはInputStreamでリクエストを処理できるから何使ったっていいやろ

123:デフォルトの名無しさん
14/05/30 16:50:49.26 qoYBEuMa.net
いたいんだろう

124:>>53
14/05/31 22:40:21.59 5baBS0eH.net
@Templateはglassfish独自だったような。
もう一度JAX-RSの勉強してみる。

125:>>53
14/05/31 23:19:28.12 5baBS0eH.net
できれば、glassfishに依存しない、jbossでも可能な純粋なJAX-RSが望ましい

それでプレーンテキストではなく、xml/htmlやjsonを
次のような形式で返すのはダメだった気がするけど、俺の気のせいか?
まあ試してみるか!

public class POJO {
@GET
@Path("/aaa")
@Produces("text/html") // @Produces("text/plain")
public String hello(){
return "<? XML宣言 ?><html><body>fuck you</body></html>";
}
}

126:>>53
14/05/31 23:24:09.73 5baBS0eH.net
あと良く見たら、HttpServletResponseのOutputStreamで出力みたいな方法があるね
どうやって使うのか分からないけど、上記の方法(>>125)がダメだったらこっちを調べる

127:>>53
14/05/31 23:55:24.75 5baBS0eH.net
今やってみたら普通にできた。俺は一体なにを勘違いしてたのだろう・・・。

今後の方針。
>>98の形式のAPIで作りなおす。
Apache Winkライブラリ実装によるJAX-RX1.1環境でテスト。
JBoss(JBoss Rest Easy)・GlassFish(Jersy)・Apache CXFでそのまま動くと思う。

128:デフォルトの名無しさん
14/06/01 20:41:47.80 NBeHYS0k.net
アホは見得をはるな

129:>>53
14/06/01 23:39:25.02 wxYsWL3a.net
まあそういうなって。とりあえず動く段階までできたよ

最適化の余地があるのと、ファイルパスのミスなどに対して
親切にエラーメッセージを吐かなかったり、内部実装は雑だが、
とりあえず前回のチュートリアル4(繰り返し出力)までできるようになった
URLリンク(hoeppe.the-ninja.jp)

130:>>53
14/06/01 23:42:32.85 wxYsWL3a.net
出力結果とリソースとなるhtmlは>>129のチュートリアルと同一のもので、
今回のバージョンでは次のようなコードになる

package test;

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class HelloApplication extends Application {


public HelloApplication(){
}

@Override
public Set<Class<?>> getClasses() {

Set<Class<?>> set = new HashSet<Class<?>>();
set.add(HelloWorld.class);
return set;
}

}

131:>>53
14/06/01 23:45:36.71 wxYsWL3a.net
package test;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.ruler.markup.api.*;

@Source(file="/WEB-INF/html/tutorial4.html")
@Path("/hello")
public class HelloWorld extends Page {
@GET @Produces(MediaType.TEXT_HTML)
public String hello(){
String markup = super.draw();
return markup;
}
@Source
Group fragment = new Group();
@Source
Canvas list = (node) -> {
String[] names = {"A", "B", "C", "D", "E"};
for(int i=0; i<5; i++){
Node copy = new Node(fragment);
copy.in(node);
Node name = copy.key("name");
name.text(names[i]);
Node index = copy.key("index");
index.text("index("+i+")");
}
};
}

132:>>53
14/06/02 00:28:07.03 avVQoG9D.net
HTMLでドキュメント書くのめんどくさい
今月末にEclipse4.4がリリースされる前には、こっちも仕上げたい

133:>>53
14/06/02 15:17:04.58 avVQoG9D.net
ホームページに2.0のjar, javadoc、環境設定をアップしたぞ

134:デフォルトの名無しさん
14/06/02 22:31:14.92 oBwkaK0R.net
何するフレームワークなの?
サイト見てみたけど、そもそもプロジェクトの大目的も書いて無ければ
設計思想も不明。誰に対して何を発信してるのかさっぱりわからん。

伝えるべき思想を失ったプロダクトは、やがて自身が失われていくだけ。

135:>>53
14/06/03 00:41:34.09 W3xt/cSk.net
だからそういうのをhtmlで用意するのも手間がかかるんだって
見て分かる人は分かるし、分からない人は待つか、何か考えてちょうだい

136:デフォルトの名無しさん
14/06/03 01:14:51.76 M8ABeZfO.net
>待つか、何か考えて

いや、もうすでにメジャーな解決手段が山ほどあるわけで。
先入観も予備知識もなく、いちJava開発者としてあなたのプロジェクトの
サイトを見た時に、なにがしたいのか、なんのために情報発信しているのかが
さっぱり理解できなかっただけ。
このスレ見たって、だれもダウンロードもしてなけりゃ使ってもいなさそうだし。

個人的な趣味や研究としてやるぶんには全然いいと思うけど、だったら
2chじゃなくてそれこそQiitaなりForkwellなりGitHubあたりで発信したほうがいいと思う。

137:>>53
14/06/03 01:35:20.27 W3xt/cSk.net
>個人的な趣味や研究としてやるぶんには全然いいと思うけど、
>QiitaなりForkwellなりGitHubあたりで発信したほうがいいと思う。

その辺くわしくないの。ツールの使い方覚えるのも面倒くさいしさ
スレ違いという話だったら、ここ俺が建てたところだし、他に話題もないようだからいいでしょ

138:>>53
14/06/03 01:37:36.98 W3xt/cSk.net
マ板が、2ch自体もすごく過疎ってるのは分かっている
それでも有用な案を出してくれる人が全くいないわけでもないんだよね

139:>>53
14/06/03 19:48:44.30 W3xt/cSk.net
>なにがしたいのか?
考えてみたら特にないんだよね。なんとなく作ってきたものを改めて自己定義してみる

自分はもともとwicketの信者で、プレーンなHTMLでデザインするというのが構想の根幹にあったのだけど、
新バージョン(2.0)では、方向性を変えてテンプレートエンジンに収まった感じかな

velocityとかsmartyと競合するわけなんだけど、違いは.vmファイルとか、独自スクリプトがないところ

2.0シリーズはテンプレートエンジンのみで他のフレームワークと組み合わせて使い、
1.0シリーズはオレオレコンテナー付きでたぶんパフォーマンスも少し良い

140:>>53
14/06/04 14:47:53.40 Q5ELIKYC.net
チュートリアルを足した
あと2つ足したら、ショッピングカートとか
解説本によくあるサンプルアプリを作りたいところだ

他のtodoリストとしては、ver2.1において
wicket:removeやjsp:includeにあたるものがほしいかな
それと、htmlに埋め込む属性がjava:canvas="xxx"のように、
属性の名前空間が"java:"なんだけど、なんとなく"view:"に変えようと思う

141:デフォルトの名無しさん
14/06/07 13:43:51.09 A9n/DlGy.net
どうせ誰もダウンロードしてないしな
こっそり互換性のない変更しとくか

142:デフォルトの名無しさん
14/06/08 02:34:45.24 XG86MQWF.net
プレーンなHTMLで書けるテンプレートエンジンは、Thymeleafってのが既にアルヨ
URLリンク(www.thymeleaf.org)

143:>>53
14/06/08 08:48:30.26 muM/tUAt.net
それは全く参考にならない
ホームページのデザインがカッコイイのは認めよう

144:デフォルトの名無しさん
14/06/10 07:59:12.82 ktfRooiL.net
チュートリアル追加
「02.動的なページ」

145:デフォルトの名無しさん
14/06/10 22:46:27.33 JLLjF1QC.net
変なのが居着いちゃったな

146:>>53
14/06/12 11:36:50.08 Ti9BpqIm.net
OGNL系のテンプレートエンジン、テンプレートにスクリプト埋め込むエンジンは根本的に失敗してるんだな

147:>>53
14/06/20 13:51:47.16 jx2J3NNK.net
最近進める暇が無い。PHPはもう嫌だー

148:デフォルトの名無しさん
14/07/03 22:45:18.73 yCk6IM6o.net
Javaもc#のマネしてlinq機能採用すればいいのに
λも中途半端で使いづらい

149:デフォルトの名無しさん
14/07/04 15:51:21.82 G5qrkZAQ.net
xml,json,csvあたりは必要としていないし、RDBには力不足、
KVSではよく分からんけどlinqは汎用ではなく何か専用にならないと使えない

150:デフォルトの名無しさん
14/07/04 16:24:59.01 Qs7fnNPT.net
>>148
λとかQuery関係はjvmで動くLispのClojureとか使うと楽なんだけどそういうのは無しな方向なんだろうなぁと思うとちょっとかなしい

151:デフォルトの名無しさん
14/07/05 14:24:57.02 +lHURxz4.net
俺が一番ほしいのは右辺型推論の進化かな

jdk7で次のように書けるようになったけど

ArrayList<String> array = new ArrayList<>();

左辺と同一の型の場合、このくらい略せてもいいよね。

ArrayList<String> array = new();

ラムダができても以前のイベントリスナーみたいなのは今後もあるわけだし、
無名クラスが楽になるんだわ。

Listener listener = new(){
@Override void onA(Event e){}
@Override void onB(Event e){}
};

152:デフォルトの名無しさん
14/07/05 22:56:30.92 CDO6L6dP.net
符号なしバイト変数さえあれば他はどうでもいい

153:デフォルトの名無しさん
14/07/06 02:46:09.09 dYSoFRpx.net
とりあえずJigsawの実用化に全力を出せばそれでいい

154:デフォルトの名無しさん
14/07/10 14:30:00.56 GIbup2ZZ.net
忘れてたけど先月にEclipseの新しいやつでてたね

155:デフォルトの名無しさん
14/07/16 13:40:07.49 espMUnFN.net
>>154
LunaからJDK8に対応したね
Streamはstream()オブジェクトを作ってからフィルタを通す感じで、最初に
オブジェクトを作る必要がある以外は正直LINQと同じだと思った
ただクエリ形式がなくメソッド形式のみという違いはあるが
ラムダ式で使う事を前提にしてるんだからそれでいいと思うけど

ジェネリック型(総称型)もC#が入れてからJDK5で入れたもんな

156:デフォルトの名無しさん
14/07/16 21:20:06.52 CuJEK7rH.net
JAVAでオンラインゲーム作れる?ブラウザゲームの

157:デフォルトの名無しさん
14/07/18 07:00:39.21 ebrrZgfr.net
作れるよ。しかも方法はひとつじゃない〜

158:デフォルトの名無しさん
14/07/18 07:07:01.90 ebrrZgfr.net
>>154
前のやつでもJDK8プラグインあったけど
何かインテリセンスがちょこちょこバグって初期化させられたり酷かった

コレで安心

159:デフォルトの名無しさん
14/07/19 17:36:20.89 l+e584H0.net
インテリセンスはMS用語だボケ

160:デフォルトの名無しさん
14/07/19 17:38:57.19 EB3tijtC.net
>>159
汎用的にはなんて呼ぶの?
Abbrebiation?

161:デフォルトの名無しさん
14/07/19 17:58:29.28 1hzYIwWV.net
>>160
自動補完でいいんじゃね?
Eclipse的にはコンテンツアシストだけど

162:デフォルトの名無しさん
14/07/19 19:02:08.22 EB3tijtC.net
>>161
おお、日本語で考えること放棄してた、ありがと

163:デフォルトの名無しさん
14/07/22 02:25:39.78 WNvZZG9N.net
λ式勉強するのに良い本ある?
検索したらこんなのみつかったけど、どうかな?

Java8ではじめる「ラムダ式」
清水 美樹
URLリンク(www.amazon.co.jp)

Java 8 Lambdas: Pragmatic Functional Programming
URLリンク(www.amazon.co.jp)

164:デフォルトの名無しさん
14/07/22 04:42:35.99 oJhyWV2m.net
>>163
プログラムの根本からやるなら「計算論 計算可能性とラムダ計算 」とか「プログラム意味論」とかの方が良いよ。
jdk8のラムダ式を理解したいってだけだと後で困ると思う(jdkが消える未来とか嫌だけど)

165:デフォルトの名無しさん
14/07/22 07:12:52.02 uw3Yx8Ji.net
C++とかC#にもラムダ式あるけど言語毎に覚えれば済む話じゃん
学者になって言語そのものを開発したいわけでなければね

166:デフォルトの名無しさん
14/07/22 11:45:21.95 iu3Ufd63.net
構文やらをおぼえるんじゃなくて
機能的な限界と回避方法・設計アプローチを把握することが重要なのは理解出来てるよな

167:デフォルトの名無しさん
14/07/22 21:25:25.74 uw3Yx8Ji.net
内容のない掛け声だな。アーキテクト様()ですか?
標準APIや大手OSS、GoogleのAndroidフレームワークとかが示す設計に従うだけだろ

アプリケーション層なんて別に昔のやり方でも十分なのよ

168:デフォルトの名無しさん
14/07/23 20:13:35.66 QSNktYB/.net
その「設計に従う」ってことができない奴が多くてな…

169:>>53
14/08/02 16:18:37.55 jWpcYE6C.net
結局、ラムダを連発するようなものは何も思いつかなかったぜ

170:デフォルトの名無しさん
14/08/02 19:28:08.08 B8TVS7ae.net
ラムダ無駄
ラムダ無駄
ラムダ無駄

171:デフォルトの名無しさん
14/08/03 07:42:15.61 VwgAezGJ.net
λ:波長
ε:エネルギー、微少量
δ:変分

172:デフォルトの名無しさん
14/08/03 08:40:48.79 yEk1GdIN.net
θ:角度
ω:猫っぱな

173:デフォルトの名無しさん
14/08/07 13:49:26.82 6rKKJZ7q.net
散々いわれてるかもしれないけど
ラムダ式、マルチスレッドの勉強するときに凄い便利だね
本文にスレッドの内容直接書いてる感じで
うさんくさいprivate class...{public void run()...って長ったらしく書く必要もないし

174:デフォルトの名無しさん
14/08/07 20:00:29.48 AO7k9w1g.net
(;´Д`)ノθヴイィィィン

175:デフォルトの名無しさん
14/08/16 00:33:31.18 RxOZrK77.net
この本買ってみた。分かりやすくてなかなかいい。

Java8ではじめる「ラムダ式」
URLリンク(www.amazon.co.jp)

O'Reillyにもこういう本あるけど翻訳でるのかなあ?
URLリンク(shop.oreilly.com)

176:デフォルトの名無しさん
14/08/16 10:41:32.32 uEJao/p1.net
ラムだって本一冊書くほど難しいことあるか?

177:デフォルトの名無しさん
14/08/16 19:51:46.69 pdj/Wpw5.net
ない
C#のLINQと大して変わらない

178:デフォルトの名無しさん
14/08/23 02:24:00.98 giz2gH8K.net
(;´Д`)ノθヴイィィィン
javaもいいけどさ、Groovyどうよ。
ラムダ風も昔からサポートしてるし、
並列処理GParsも備える。

javaコードからの動的スクリプト対応強化されてるし、もっとgroovyユーザー増えてほしいわ。
なんか日本は食いつき悪いよねこの言語。

179:デフォルトの名無しさん
14/08/23 02:41:54.74 3qxK8v5g.net
厳密さがJavaのいいとこなのに
それ取ったらただの使いにくい言語やん

180:デフォルトの名無しさん
14/08/23 16:42:17.69 67RgqQJA.net
そうだな
Scalaも完全にオワコン化しているしな

181:デフォルトの名無しさん
14/08/23 19:31:51.75 ypGwZfbR.net
だってJavaで同じもの書けるんだもん。

「Javaのライブラリを呼び出せます!」っていかにも利点のように言うけど、
Javaを常に意識しながら、GroovyなりScalaの文法で書け、ってことじゃん。

すでにPythonやRubyの文法を知ってる人がJythonやJRuby使うのはわかるけど…。

182:デフォルトの名無しさん
14/08/23 19:56:44.05 NjTFO7Nu.net
そこに颯爽とclojureが

183:デフォルトの名無しさん
14/09/11 23:02:07.22 3OFSQCDc.net
つまりJavaにGenericsは不要である

URLリンク(pc5.2ch.net)

184:デフォルトの名無しさん
14/11/01 12:47:48.17 xWhOrI96.net
floatの二次元配列を作ったけど、1次元目は行の管理用で、floatである必要ないんですが、
これってムダですかね?
でもArrayListだと値の再設定とか面倒だし・・・・

185:デフォルトの名無しさん
14/11/02 02:58:33.29 Rnn+BjWS.net
ここって53のためのスレじゃないの?

186:デフォルトの名無しさん
14/11/10 21:14:43.63 WFh7SgJF.net
>>184
昔みたいに1バイト減らすのにあれこれする必要もなかろう
どーんといっとけ

187:デフォルトの名無しさん
14/11/16 09:30:37.74 CWn0dPnD.net
ムダというか作り方が悪い

188:デフォルトの名無しさん
14/11/16 13:00:17.01 JHjMVLlI.net
mapじゃダメなんだろ

189:名無しさん
15/06/25 19:01:05.61 NAhpz9Jk.net
JD出会い援助交際動画 個人撮影
URLリンク(cutievideogirl.x.fc2.com)

190:デフォルトの名無しさん
15/07/15 22:15:06.97 jtYC3/OV.net
ラムダってzendの呼び出しっぽいの?

191:デフォルトの名無しさん
15/07/15 22:15:54.85 jtYC3/OV.net
>>184
フロートって使う意味あるの?
ダブルじゃダメなん?

192:デフォルトの名無しさん
15/12/19 10:23:22.99 BwkC8e+4.net
プログラマはMacを使ってるってマジ?
スレリンク(news板)


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

2943日前に更新/41 KB
担当:undef