【java】jdk8も出るし、何か作ってみるか【lambda】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2014/03/17(月) 02:13:19.85ID:EZQcdYaK
リリース目前!
2014/03/22(土) 07:10:58.70ID:5gx6vbDt
嬉しくてチンチンたちまくりレイプ事件が多くなるのを心配してるんだよ
2014/03/22(土) 11:46:18.19ID:bsv8fewG
すべってますよー
2014/03/22(土) 12:06:48.36ID:pO1WrkSi
>>31
例えばこれだね www.gaitame.com/info.html
> 現在、「Java8」では『外貨ネクストネオ』のリッチアプリ版が起動しないこと、Webブラウザ版のチャートが表示されないことを確認しておりますので、アップデートをしないようお願いいたします。
2014/03/22(土) 12:09:24.76ID:oreZJNMZ
>>34
今回そんな互換性なくなるような変更点あったっけ?
セキュリティ関連でデフォルトが変わった奴とかのせいか?
36デフォルトの名無しさん
垢版 |
2014/03/30(日) 17:15:39.34ID:jhRCncdW
JDTがしょっちゅう固まるのだが
2014/03/30(日) 22:53:50.31ID:pBWL0FS5
lambda?
オッサンにはぜんぜん理解できん(T_T)
あんなんで書かれた日にゃメンテナンス性が著しく低下しそう
2014/03/31(月) 21:14:42.92ID:YRh/37pv
それはさすがに理解してくれよ。
最初は匿名クラスのシンタックスシュガーぐらいのもんだと思ってりゃいいんだよ。

匿名クラス禁止とか言い出すようなら、転職するしかない…
2014/03/31(月) 21:47:34.56ID:QzEXOdpw
http://news.mynavi.jp/special/2014/java8/
この辺の例にある、

list.sort(new Comparator<String>(){
@Override
public int compare(String s1, String s2){
return s1.length() - s2.length();
}
});

が、

list.sort((s1, s2) -> s1.length() - s2.length());

こう書けるのはすごく便利そう。というか下の見た後だと上は冗長過ぎ。
複雑なラムダ式はよう判らんが、こういうレベルのはどんどん普及してほしい。
むしろこれすら理解できない老害は氏ね。
2014/04/01(火) 00:56:28.29ID:NI6qZZms
Androidとかの対応はどうなるんだろうねぇ
2014/04/01(火) 18:06:01.00ID:DnaG0wEC
何か作ってみるかと思ったらインストールできない
調べたらXPはサポート外かよゴミ言語だな
42デフォルトの名無しさん
垢版 |
2014/04/01(火) 18:29:50.90ID:bN6Ka3eO
逆!
XPがゴミ
2014/04/01(火) 19:39:57.65ID:PR3x9no5
XPがゴミだとふざくんなよ


いまだにXPでネットやってる >>41 がゴミ
2014/04/03(木) 11:22:03.46ID:ZxAxSvKk
み・・みんな・・ひどい・・・・・
2014/04/03(木) 12:03:37.80ID:KbAl46jm
>>44
酷いつーか、来週からどうすんだ?
割とマジで迷惑だろ>>XP残留組
2014/04/03(木) 20:45:39.26ID:ISM3Ag2e
えっ・・・Java8はWindows XP で動かんの?
プラットフォームに依存しない、ってのがJavaの最大の"ウリ"ではなかったのか
2014/04/03(木) 21:02:33.65ID:KbAl46jm
>>46
終わったプラットフォームとか生まれる前から死んでるプラットフォームでは動かないよ
2014/04/04(金) 23:30:21.48ID:6t2n97/t
Write once, run anywhere
2014/04/05(土) 00:21:43.57ID:3yuavrKE
データベース関連は難しいな
2014/04/06(日) 00:57:50.68ID:IBDsli1X
もう少し違うものを作ってみよう(汗
2014/04/07(月) 00:26:40.02ID:5yVEedO3
EclipseはLuna4.4待ちなのかと思ったら
JDT自体はGA来てたのな
2014/04/09(水) 00:59:51.31ID:jKnccCoL
使った感じeclipseのjdtアドオンはまだ不安定だよ
2014/04/09(水) 18:18:00.80ID:jKnccCoL
サーブレットのライブラリを作ってみる
http://hoeppe.the-ninja.jp/java_markup_ruler/html/tutorial/tutorial1.html
2014/04/11(金) 14:07:16.84ID:6rfX8xtJ
>>53続き
http://hoeppe.the-ninja.jp/java_markup_ruler/html/tutorial/tutorial2.html
2014/04/11(金) 20:36:22.79ID:0xnK6ibc
Once write, debug everywhener
2014/04/12(土) 14:03:01.71ID:KEuyoGFu
>>37
どこが難しいのかさっぱり。。。
むしろ7より前でコーディングする気が失せた
今の職場は当然のように7だけどね

あとAndroidとかGAE対応はどうなんだろうね
ここあたりすっげー遅いイメージしかないんだが、Google先生
2014/04/12(土) 23:58:58.17ID:oJ1LFVkB
Month while, the dog everyone.
58>>53
垢版 |
2014/04/13(日) 01:52:36.69ID:cpdOQcgc
続き
http://hoeppe.the-ninja.jp/java_markup_ruler/html/tutorial/tutorial3.html
59>>53
垢版 |
2014/04/14(月) 03:48:52.30ID:3UflCQPn
続き
http://hoeppe.the-ninja.jp/java_markup_ruler/html/tutorial/tutorial4.html
2014/04/14(月) 03:51:49.14ID:3UflCQPn
HTML idだとまずいことに気づいた
独自属性java:keyにして、出力時には消えるようにしよう
2014/04/15(火) 01:17:54.07ID:QjDXpoj9
感想0とはつらいものだ
2014/04/15(火) 13:56:25.77ID:3Sv4k8i4
>>61
なんか読めなかった
後でPCで見ておくよ
2014/04/15(火) 14:20:27.79ID:QGh49XkA
>>61
感想なんて書かれないのが普通なんだからアクセスログでほくそ笑んでれば良いじゃんよ。
64>>53
垢版 |
2014/04/16(水) 00:28:38.94ID:F5idbQac
一部修正した。html idで全部やってたことを独自属性java:xxxに変更。
これによってhtmlからjavaのスケルトンソースを生成するツールも作れる
65>>53
垢版 |
2014/04/16(水) 01:08:38.67ID:F5idbQac
Qiitaで書き散らそうかと覗いてみたけどそういう雰囲気じゃなかった
2014/04/16(水) 15:47:25.91ID:ZPDSwdSk
感想:

ラムダ使う必要なくね?
2014/04/16(水) 18:35:30.68ID:F5idbQac
サーブレットのdoGET, doPost... に値するところは
メソッドのオーバーライドでも大して変わらんね

少し前のフレームワークではアノテーションでやっていた
httpパラメータからのコンバータやバリデータをラムダでやると効果的かもしれん
wicketのそれが近いと思う
2014/04/16(水) 18:48:21.55ID:EhohGL0g
Lambdaでやらせるなら表示の絞り込みとかの方がよくね?(SQLで得た一覧をmemcachedに蓄えたりした奴のフィルターとかソートね)
2014/04/16(水) 19:58:23.28ID:F5idbQac
Model側で別の層になるなそれ。

少し前にEntity Rulerという名前で
RDBライブラリ(O/Rマッパー)作ろうとしていたのだが
アイデアがフラフラしたあげくに頓挫しちゃったんだよね
2014/04/16(水) 20:12:03.87ID:F5idbQac
>>68
で言われているようなことをする場合、普通はSQL内でやるもんだよね。
whereとかjoin書かないで全部拾ってきて、java側でフィルターすると
ネットワークIOがボトルネックになるからさ。

HSQLかH2に限定すれば、ストアド(具体的にはユーザー定義関数)を
javaで書けるから何でもストアド化するって手もあるんだけど、
(そうするとネットワークIOの問題は解決する)
RDBに関する全般的な知識がないから、おれにはちょっと荷が重い
71デフォルトの名無しさん
垢版 |
2014/04/18(金) 00:52:11.94ID:qfiz40wI
さて、Webライブラリの話に戻るんだけど、
cakePHPとかだとバリデータがModelの処理とされているように、
web(http/html)と直接関係ないものは全てModelとして扱う。
(コンバータ、バリデータ etc...)

そして本ライブラリはMVCのVとCのみを扱うため、
HTTPクエリ/パラメータからのコンバータなどは作らない。
従ってあとはクッキーとセッションあたりをどうするべきか考えれば
とりあえず完成、version1.0をリリースできるな。
2014/04/22(火) 00:31:42.80ID:+hEYAfLs
おいJava8めっちゃ高速になってないか
GCの性能もめっちゃ良くなってるようなきがするんだが
みんなどう?
2014/04/22(火) 20:25:51.82ID:LK8qL++Z
みんなまだ様子見くらいしかしてないんじゃないの?
JRE7とJRE8でパフォーマンス計測したなら教えてよ
2014/04/23(水) 10:28:23.85ID:IIePiM6b
ベンチの結果が20%向上した
うちの場合
2014/04/23(水) 10:30:45.74ID:IIePiM6b
あと、Nashornクソ遅い
巷ではRhinoより速いと言われてるらしいが
2014/04/23(水) 13:35:11.28ID:kB34xYG+
>>75
何と比べて遅いん?
2014/04/23(水) 13:53:28.44ID:qlKuU/ND
>>76
Rhino-1.7R5

Node.jsのサブセットみたいなものを自作して使用中なんだが
使い方が悪いのかしらんがNashornは超遅い
2014/04/24(木) 01:25:00.86ID:uw+Asd59
おとなしくnode.js使えよ
V8パワーを実感できるぞ
2014/04/24(木) 03:52:08.38ID:ic8Kyj+r
自作言語をjavascriptに変換して実行とか面白いかもな
javassist使ったほうがいいかもしれんが
2014/04/25(金) 16:51:13.24ID:tzejnHu3
>>78
JSだけで完結するならそうなんだけど、
Java資産を流用せにゃあかんという要求がありまして
2014/04/28(月) 03:07:46.77ID:4J9xjlOi
ランバダ?
2014/04/29(火) 00:15:08.02ID:9kKuqxmA
UncheckedIOException 見て
Javaはそろそろ限界だと感じた
83>>53
垢版 |
2014/05/09(金) 11:50:47.96ID:SYgUl/A2
ソースのプロトタイプ生成ツールの試作品ができた
具体的には.htmlから.javaを生成するツール

入力(html)

<?xml version="1.0" encoding="UTF-8"?>

<html xmlns:java="http://hoeppe.the-ninja.jp/"; java:page="Tutorial4">
<body>
<div>Item List</div>
<div java:canvas="list">

<div java:group="fragment">
<div>Item</div>
<div java:key="index"></div>
<div java:key="name"></div>
</div>
</div>
</body>
</html>
84>>53
垢版 |
2014/05/09(金) 11:51:44.16ID:SYgUl/A2
出力(java)

package org.ruler.markup.tool.export;

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

@Mount(path="/default.html")
@Source(file="tutorial4.java")
public class tutorial4 extends Page {

@Source
Group fragment = new Group();

@Source
Canvas list = (node) -> {

};

@Override
public void action(Http http) {
http.GET = (event) -> {

event.setCode(Code.OK_200);
event.setType(Type.html);
event.draw(this);
};
};

}
2014/05/09(金) 13:20:04.59ID:uFy0rdVu
ラムダ??

BGM聴きたい
86>>53
垢版 |
2014/05/11(日) 17:47:09.64ID:4QdDd3nu
とりあえずjavadocとjar本体をアップしたぜ
チュートリアルだけ試せます
87>>53
垢版 |
2014/05/11(日) 19:56:13.04ID:4QdDd3nu
tomcatプラグイン紛らわしいね。使わないほうが良さそう
2014/05/13(火) 20:45:35.20ID:0208S0UM
javaさようなら。

見捨てられたXPユーザより。
2014/05/13(火) 22:05:00.93ID:M8thHBuI
XPはjava以前だろうにwww
2014/05/13(火) 23:10:44.12ID:yjKm7ka1
>>88

はいさようなら シッシッ
2014/05/14(水) 09:43:53.65ID:Yp3DnhFD
>>88
頼むからネットに繋ぐのはやめてもらえないか?
2014/05/14(水) 20:38:43.95ID:9YZWsYJ2
おちんこぴゅっぴゅぴゅ
93>>53
垢版 |
2014/05/16(金) 15:09:03.38ID:t+BktqNJ
協力者募集中〜
94>>53
垢版 |
2014/05/17(土) 01:56:05.90ID:C6+8ucAK
わびしい。キータに投稿してみっか
95デフォルトの名無しさん
垢版 |
2014/05/17(土) 01:59:54.60ID:cEn7MAy/
UIラップだけに切り出した方がいいんじゃないかねぇ
96>>53
垢版 |
2014/05/17(土) 02:59:52.74ID:C6+8ucAK
それは可能だし、Viewのみにすると規模が縮小して俺も楽なんだけど、
どちらにせよSpringMVCとかJersey、JSF2といった
今主流のControllerと連携はできないんだよね
97デフォルトの名無しさん
垢版 |
2014/05/17(土) 03:51:13.79ID:cEn7MAy/
Controller周辺は拡張ライブラリで自由に選べるようにして置けば汎用性高いのが出来ると思う
コンテナまで実装は無駄が多すぎる
IDや特殊IDでマッピング出来てピュアなhtmlで作れるのはそれなりに需要高いと思う
98>>53
垢版 |
2014/05/17(土) 13:17:10.19ID:C6+8ucAK
参照実装つくるならstruts1だろうね
単なるライブラリとして完全に分離された状態で連携できる
(サーブレットAPIのRequestとResponseを直接使えるから)

SpringMVC、Jersey、Playだとフレームワーク毎に対応したもの作るの大変
99>>53
垢版 |
2014/05/17(土) 21:23:21.32ID:C6+8ucAK
前言撤回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");
};
}
100>>53
垢版 |
2014/05/18(日) 00:29:13.30ID:LWas9+0T
そのさい、多少APIを変更するのは避けられない

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

それでもDI、コンバータ、バリデータが全部流用できるのが大きいが
101>>53
垢版 |
2014/05/18(日) 17:37:20.86ID:LWas9+0T
JAX-RS v2.0 を試そうとApache CXFを試したが、hello worldも実行できず断念
Glassfish(Jersey)やJBoss(JBoss Rest Easy)はtomcatで使いたいので断念

JAX-RS v1.1 しか使えないが、jarも少なくてコンパクトなApache Winkで調査中〜
2014/05/18(日) 19:26:31.34ID:TTQj//9Y
>>53
よくわかんねーや、仕様を日本語で書いてくれ。
103>>53
垢版 |
2014/05/18(日) 21:25:44.60ID:LWas9+0T
javadocとかhtml書くのも大変なのよ
javadocは日本語と英語を併記しようとして失敗した
チュートリアルも日本語がおかしいかもしれない

もしくは、もっと全体的な概要のことだろうか?
2014/05/18(日) 21:29:41.51ID:N+11ThYv
>>103
そうだよ、ぱっとみてなにやってんの?てなかんじ
2014/05/18(日) 21:30:57.47ID:N+11ThYv
それとDOMが遅いのは知ってるよね?
106>>53
垢版 |
2014/05/18(日) 22:53:36.54ID:LWas9+0T
どれを指していってる?
107>>53
垢版 |
2014/05/18(日) 23:02:35.40ID:LWas9+0T
その指摘はたぶん半分正しい。

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

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

チュートリアル1では、全てをDOMで操作しているので、たしかに処理に無駄がある。
従ってチュートリアル1は最も自由度の高いAPIであるが、HTMLではなくXML(REST, AJAX)向きだ。
108>>53
垢版 |
2014/05/18(日) 23:08:29.27ID:LWas9+0T
これを踏まえたうえで、チュートリアル02, 03を見てほしい。
Canvasというクラスがでてくる。Canvasに指定されたノードは、動的な領域である。

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

Node.classにはjavadocに載っていないが、onReady()というメソッドがあって、
あらかじめ直列化された(変わりに変更不能になった)文字列へと最適化している
109>>53
垢版 |
2014/05/18(日) 23:18:39.38ID:LWas9+0T
具体的に書くと、Nodeは通常以下のデータを持っている

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

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

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

従ってDOMは自動的に、最適な形式で最適化されるのだ
110>>53
垢版 |
2014/05/18(日) 23:21:28.16ID:LWas9+0T
ちなみに、このonReady()というメソッドはサーバー起動時に行われる
初期化の中で実行され、アプリ開発者には触れないようにパッケージアクセスになっている
111>>53
垢版 |
2014/05/18(日) 23:29:41.69ID:LWas9+0T
そんなわけで、計測していないが、JSPでタグライブラリ使うよりは
むしろ早いんじゃないかと思う。

JSPだとBeanUtilsとかでリフレクション使うが、
こちらはまったくリフレクションと無縁だし。
112>>53
垢版 |
2014/05/19(月) 01:30:36.99ID:sKL+/ft2
そーいえば、バグを修正してからソースアップしてなかったや
113>>53
垢版 |
2014/05/19(月) 23:11:24.30ID:sKL+/ft2
質問してた人は分かってくれたのだろーか?
ま、いっかー♪
2014/05/19(月) 23:14:52.36ID:tS67yV1L
わかんねーよ、まあいいよ
115>>53
垢版 |
2014/05/20(火) 12:43:37.30ID:6S2+5F+I
このフレームワークは、JSPを代替するものである。他はあってもオマケなのさ
SpringMVCといったモダンなフレームワークやJSP/Servletをそもそもほとんど知らないと
さすがに厳しいだろうね
2014/05/20(火) 13:29:36.59ID:01pyNPJw
.どうでもいいけど^2、大きくでたね、恥ずかしい。
117>>53
垢版 |
2014/05/20(火) 20:12:46.72ID:6S2+5F+I
どうでもいいなら最初から質問しないこと
そして>>105のような知ったかをかまさないことだな
2014/05/20(火) 20:41:00.48ID:PNoH4CCh
2014/05/21(水) 08:29:43.45ID:5ztNVRYW
スルースキルなさすぎ
120>>53
垢版 |
2014/05/23(金) 18:50:26.17ID:a5qO5SrY
2chの調子がおかしい。またscの件だろうか
2014/05/28(水) 00:33:35.50ID:9OS265q7
JAX-RS(Jerseyとか)に対応したかったが、
あれJAXB専用だという結論に達した

EE標準で他になんか無かったっけ
122デフォルトの名無しさん
垢版 |
2014/05/30(金) 02:26:09.40ID:tZAWFEUT
テンプレート指定でpojoぶち込んで変換する程度なのになぜそんな難しい事だと思うんだろう・・・
ちゃんと考えたらオプショナルなライブラリとして切り出せるよ
2014/05/30(金) 06:22:55.92ID:6rGA/Qk9
JAX-RSはInputStreamでリクエストを処理できるから何使ったっていいやろ
2014/05/30(金) 16:50:49.26ID:qoYBEuMa
いたいんだろう
125>>53
垢版 |
2014/05/31(土) 22:40:21.59ID:5baBS0eH
@Templateはglassfish独自だったような。
もう一度JAX-RSの勉強してみる。
126>>53
垢版 |
2014/05/31(土) 23:19:28.12ID:5baBS0eH
できれば、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>";
}
}
127>>53
垢版 |
2014/05/31(土) 23:24:09.73ID:5baBS0eH
あと良く見たら、HttpServletResponseのOutputStreamで出力みたいな方法があるね
どうやって使うのか分からないけど、上記の方法(>>126)がダメだったらこっちを調べる
128>>53
垢版 |
2014/05/31(土) 23:55:24.75ID:5baBS0eH
今やってみたら普通にできた。俺は一体なにを勘違いしてたのだろう・・・。

今後の方針。
>>99の形式のAPIで作りなおす。
Apache Winkライブラリ実装によるJAX-RX1.1環境でテスト。
JBoss(JBoss Rest Easy)・GlassFish(Jersy)・Apache CXFでそのまま動くと思う。
2014/06/01(日) 20:41:47.80ID:NBeHYS0k
アホは見得をはるな
130>>53
垢版 |
2014/06/01(日) 23:39:25.02ID:wxYsWL3a
まあそういうなって。とりあえず動く段階までできたよ

最適化の余地があるのと、ファイルパスのミスなどに対して
親切にエラーメッセージを吐かなかったり、内部実装は雑だが、
とりあえず前回のチュートリアル4(繰り返し出力)までできるようになった
http://hoeppe.the-ninja.jp/java_markup_ruler/html/tutorial/tutorial4.html
131>>53
垢版 |
2014/06/01(日) 23:42:32.85ID:wxYsWL3a
出力結果とリソースとなるhtmlは>>130のチュートリアルと同一のもので、
今回のバージョンでは次のようなコードになる

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

}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況