18/07/19 08:38:28.86 B62Oo3TM.net
>>544
後あれだ
なんでこんな規約があるんだって考えるのも最初は勉強になるぞ
件のデフォコン必須!とかはリフレクション多用してて落ちたことがあったからそのまま規約になった~とか理由があるかもしれない
575:デフォルトの名無しさん
18/07/19 08:46:17.55 5x41Wecj.net
javaはもうwebの世界でしか生きていけないのかな
576:デフォルトの名無しさん
18/07/19 08:53:04.66 Op5duy3q.net
>>550
kindleもandroidもJavaで動いてるし
ただ単にwebアプリが増えてるだけだと思う
577:デフォルトの名無しさん
18/07/19 08:55:07.02 Op5duy3q.net
webに向いてるというよりはwebの世界が広がっただけ
578:デフォルトの名無しさん
18/07/19 08:59:35.72 Op5duy3q.net
>>547
話を一般化しすぎじゃないか
SIを嫌ってるだけだろ
579:デフォルトの名無しさん
18/07/19 09:02:43.68 Op5duy3q.net
スカラより簡単ピエチピより厳密
アプリサーバがたくさんあって人材も豊富
作っているのは世に名も高きオラクル
Java最強伝説
580:デフォルトの名無しさん
18/07/19 10:26:37.51 BQmzByzh.net
雑談終了
581:デフォルトの名無しさん
18/07/19 11:32:42.94 MIkQQrXR.net
Kotlinもよろしく
582:デフォルトの名無しさん
18/07/19 12:41:54.56 hUcifAQw.net
>>551
Andoroidのjavaはもう終わりかな
583:デフォルトの名無しさん
18/07/19 13:22:28.48 KtebpVot.net
AndroidはもうKotlinでいいしな
584:デフォルトの名無しさん
18/07/19 13:35:56.12 lzwulHPo.net
Javaの知識があってのKotlinだけどな。
Nativeは知らんけど。
585:デフォルトの名無しさん
18/07/19 14:46:46.68 Op5duy3q.net
>>557
終わらぬだろ、終わらぬよ
終わりません!
586:デフォルトの名無しさん
18/07/19 18:49:13.04 6E4STiKC.net
googleはjavaでオラクルに一兆円の損害賠償払うのにjavaは捨てられないのかな
587:デフォルトの名無しさん
18/07/19 18:52:53.52 6E4STiKC.net
オラクル社長はドラ息子に巨万の富を残してるのにまだ足りないみたいね
andoroidの巨額提訴にjava有償化に
588:デフォルトの名無しさん
18/07/19 20:41:02.41 m5MPu7YP.net
>>546
良いこと言うね
Java使いにもまともな人居たんだ
589:デフォルトの名無しさん
18/07/19 21:50:50.84 13R/sezRb
ここであっているのかわかりませんが、
Javaのエラーについて質問です。
音楽を作るソフトを起動するとこんなエラーが表示されてソフトが機能しません。
URLリンク(imgur.com)
もし対処法、ご存知の方がいたら、教えてもらえませんか。
590:デフォルトの名無しさん
18/07/19 21:52:48.51 Sjf7ku63.net
寝言は寝て言え
591:デフォルトの名無しさん
18/07/20 03:33:50.65 KKufvgV7.net
Java使いに「も」って、まともな人が居ない事前提?
36歳がそうだからと言って全体を括るのは乱暴かと
592:デフォルトの名無しさん
18/07/20 22:23:27.83 58oNqGBsN
>>564
音楽を作るソフトの場所と素材の場所が分かりにくいんだがそれじゃないか?
javaと一緒にPrograms直下とかが結果見るのに分かりやすい。まあ正しければどこでも良い。
音楽を作るソフトからエラーが出てるなら参照のコンパイルエラーがある可能性がある。
音楽を作るソフトがエラーを吐いて出てこないならjavaファイルならソースにミスがあるから見直してみてくれ。
593:デフォルトの名無しさん
18/07/20 22:37:40.97 58oNqGBsN
>>564
音楽を作るソフトの場所と素材の場所が分かりにくいんだがそれじゃないか?
javaと一緒にPrograms直下とかが結果見るのに分かりやすい。まあ正しければどこでも良い。
音楽を作るソフトからエラーが出てるなら参照のコンパイルエラーがある可能性がある。
音楽を作るソフトがエラーを吐いて出てこないならjavaファイルならソースにミスがあるから見直してみてくれ。
594:デフォルトの名無しさん
18/07/23 06:03:22.92 a5odQemo.net
javaの致命的に糞な所を3つ挙げるとしたら何?
おまけで他言語よりこここだけは良いということ1つ
有料化になること以外でよろ
595:デフォルトの名無しさん
18/07/23 07:40:33.50 tja2UxRY.net
糞なところ
・貧弱なジェネリクス、極めて非直感的なワイルドカード
・直交性が目的化していて利便性が犠牲になっている標準ライブラリ群
・プログラマの平均スキルの低さ
良いところ
・安い単価でプログラマを大量に調達できる
596:デフォルトの名無しさん
18/07/23 07:46:24.27 r2NgEomY.net
致命的と思うところはない
だって致命的な欠点があったらJava使うのやめてるだろ
Javaの良いところはクラスライブラリと開発コミュニティ
Java自体の言語仕様は今となっては秀でている点はなく後発言語のほうが優れている
しかしJavaの豊富なクラスライブラリに多言語が追い付くの容易ではない
Java開発者は標準クラスライブラリに沿って・似せてクラス設計する人が多い印象
そのため外部ライブラリを見つけてきてもインターフェイスに一貫性があり使いやすいことが多い
昔、Perlでもモジュールを集めるCPANというものがあったけど一貫性がなくモジュールごとに作法がバラバラだった
Javaの良さは世界中の開発者が設計ポリシーを共有していて作られたライブラリが相互運用しやすいエコシステムにある
597:デフォルトの名無しさん
18/07/23 11:24:26.77 ZjQpUEmE.net
オラクルかな
598:デフォルトの名無しさん
18/07/23 18:43:51.10 dX14gRVE.net
それをいっちゃあおしめえよ
599:デフォルトの名無しさん
18/07/23 19:32:54.33 IsAC2rDC.net
変数宣言が冗長すぎ
Date date = new Date()
Date型って最初に宣言してんだからnewもDateで基本問題無いやろ
600:デフォルトの名無しさん
18/07/23 19:50:26.60 EvGqybr2.net
>>574
Object o = new String() ;
ってやりたいこともあるから。
601:デフォルトの名無しさん
18/07/23 19:56:00.68 dX14gRVE.net
型推論してくれるKotlinはナイスだな
602:デフォルトの名無しさん
18/07/23 20:09:10.55 stexMLiC.net
君らvar使ってないのか
603:デフォルトの名無しさん
18/07/23 20:11:54.87 RCR4OhGD.net
moduleが難しすぎて突破できないから
Java8で行くお!
604:デフォルトの名無しさん
18/07/23 20:14:19.78 cHxBvLXH.net
そういや最近宣言と同時にnewってあんましてないな
605:デフォルトの名無しさん
18/07/23 20:17:45.49 m6zef+c0.net
varはポリモーフィズムとは相容れないから。
606:デフォルトの名無しさん
18/07/23 20:27:02.30 ddy5leO9.net
>>580
相容れないなんてことは無いだろ。
限られたシチュエーションで使えないだけだ。
607:デフォルトの名無しさん
18/07/23 22:14:25.10 IsAC2rDC.net
>>575
それならそういうときはそれでいいけど、
Date date;
みたいに省略したときは自動でDateをnewしてくれ
608:デフォルトの名無しさん
18/07/23 22:16:05.03 IsAC2rDC.net
略するところを間違えた、まあ空気読んでくれ
609:デフォルトの名無しさん
18/07/24 04:21:52.30 /tfIts3n.net
Ky ky= new Ky();
610:デフォルトの名無しさん
18/07/24 09:02:46.76 3bmjSXS4.net
Kotlin使えばよい
後から作った言語なのでそういう細かいことは解消されている
611:デフォルトの名無しさん
18/07/24 09:06:29.72 WgNXUi2L.net
>>582
とてつもなく浅い知識で批判とか恥ずかしくないの?
612:デフォルトの名無しさん
18/07/24 09:40:11.61 uOakFE5H.net
そんなに浅くない
613:デフォルトの名無しさん
18/07/25 07:32:49.10 BeP5/XfH.net
>>585
ははーん、さてはおめー何もわかってねーな
614:デフォルトの名無しさん
18/07/25 09:27:06.98 GNtg4sP8.net
>>588
というと?
615:デフォルトの名無しさん
18/07/25 19:09:16.20 s14gtaOU.net
否定だけして根拠示さないのは例の人かな?
616:デフォルトの名無しさん
18/07/25 20:01:38.85 ekeRKo17.net
「ははーん、さてはおめー何もわかってねーな」という台詞を言ってみたかっただけの人か?
617:デフォルトの名無しさん
18/07/25 20:12:44.09 QfwTkRmU.net
下記ブログの例題がEclipseでもpaiza.ioでもコンパイルエラーになって色々試したのですが解決出来ないので原因と回避策を教えてください
Eclipseでのエラー: 型の不一致: Object から int には変換できません
paizaでのエラー: Object ca
618:nnot be converted to int https://nompor.com/2017/11/16/post-1118/ ブログのページ最後にある例題サンプルです 「Iteratorで全要素アクセス」 18行目 int data = it.next();//次の要素を取得します。 --- 例題そのままをコピペしてもエラーになるので自力解決が出来なくて困っています
619:デフォルトの名無しさん
18/07/25 20:17:15.54 GZRArLRs.net
>>592
Iterator it = arr.iterator();
これを
Iterator<Integer> it = arr.iterator();
こうや!
620:デフォルトの名無しさん
18/07/25 20:20:52.44 QfwTkRmU.net
>>593
それはやったのですが、エラーになりましたね
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
integer を型に解決できません
621:デフォルトの名無しさん
18/07/25 20:27:16.64 QfwTkRmU.net
自己解決しました
エラーのpopアップに表示されていたキャストをすれば解決しました
もしかしたらブログを執筆していた頃には問題の無かった書き方が厳密になったとかなのでしょうか?
原因が例題書かれた方のミスなのか仕様変更なのか意味が分からないままエラーだけ出なくなった状況ですが次へ進みます。
ありがとうございました
18行目(変更前
int data = it.next();//次の要素を取得します。
18行目(変更後
int data = (int) it.next();//次の要素を取得します。
622:デフォルトの名無しさん
18/07/25 20:30:23.90 QfwTkRmU.net
そもそもなのですがIteratorって使いますか?
他にも配列などの操作方法あるようですし
どうしてこんな面倒な書き方で参照したりするのか疑問です
623:
18/07/25 20:31:46.04 2d5RfbzO.net
>>592
URLリンク(ideone.com)
Object を Iterator にキャストしてオートボクシングを利かせてみた
624:デフォルトの名無しさん
18/07/25 20:40:39.19 QfwTkRmU.net
>>597
ありがとうございます
625:デフォルトの名無しさん
18/07/25 20:51:02.31 ITmWCwNQ.net
>>595
それは解決になってない。
キャストで逃げたら、ジェネリック使う意味がなくなる。
626:デフォルトの名無しさん
18/07/25 20:54:37.41 GZRArLRs.net
>>594
integerじゃなくてIntegerだよ
URLリンク(paiza.io)
627:デフォルトの名無しさん
18/07/25 21:27:25.94 GZRArLRs.net
>>597
int data = (int)it.next();
int data = (Integer)it.next();
これどちらもオートボクシングが行われてますよ
プリミティブ型で格納されてるわけじゃないっすから
オートボクシング使わずに書くならこう!
int data = ((Integer)it.next()).intValue();
628:デフォルトの名無しさん
18/07/25 21:49:55.62 QfwTkRmU.net
>>600
13行目
Iterator<Integer> it = arr.iterator();
自分<integer>でミスタイプしてましたねすみません
>>601
勉強になります
>>これどちらもオートボクシングが行われてますよ
>>プリミティブ型で格納されてるわけじゃないっすから
まだ意味がわからないので調べてみます
>>599
>>キャストで逃げたら、ジェネリック使う意味がなくなる。
まだ意味がわからないので調べてみます
ありがとうございます
629:デフォルトの名無しさん
18/07/25 22:28:09.59 QfwTkRmU.net
>>592
の原因と教えていただいたことを自分なりに調べた結果のまとめと確認です
(連投すみません
13行目(変更前
Iterator it = arr.iterator();
これがジェネリクス総称型として型を指定していないのでObject型となり次の
18行目(変更前
int data = it.next();//次の要素を取得します。
ここでInt型にObject型を代入しようとして型不一致で代入できないとのエラーが出ていた
解決策としては
13行目(変更後
Iterator<Integer> it = arr.iterator();
明示的に<Integer>を宣言することで次の
18行目(変更前
int data = it.next();//次の要素を取得します。
ここで代入可能となったが
これはInt型とInteger型のオートボクシング機能が働いている
630:デフォルトの名無しさん
18/07/25 22:28:36.05 QfwTkRmU.net
>>603
これで合ってますか?
最後の「これはInt型とInteger型のオートボクシング機能が働いている」のかちょっとまだ不安です
キャストはしてないけどオートボクシングが働いてたら意味がない?
このあたりがまだよく理解出来てないと思います
>>601 これをふまえると・・・
>>オートボクシング使わずに書くならこう!
>>int data = ((Integer)it.next()).intValue();
13行目(変更後
Iterator<Integer> it = arr.iterator();
18行目(変更後※
int data = it.next().intValue();//次の要素を取得します。
※ここまでやらないと意味が無いのでしょうか??
一応どちらも正常�
631:ノ結果出てますが内部的に違いがあるのか不安です?
632:デフォルトの名無しさん
18/07/25 22:37:49.97 GZRArLRs.net
>>604
オートボクシングはプリミティブ型とラッパークラスの変換を
自動で行う仕組みのことで
毎回、↓こう書くの面倒だよね
int data = it.next().intValue();
じゃあ↓こう書けるようにしよう
int data = it.next();
ということで導入されたものだから積極的に使ったら良いよ
633:デフォルトの名無しさん
18/07/25 22:44:09.05 QfwTkRmU.net
>>605
Iterator<Integer> it = arr.iterator();
int data = it.next();
オートボクシングは便利機能なので使ってOKで
.intValue();が自動的に省略されてるだけで結果は同じ
これで解決ってことですね!納得しました!
ありがとうございました
634:デフォルトの名無しさん
18/07/25 22:44:22.96 +qk7Pgth.net
だね
Integerからintへの変換ではインスタンス生成されないし
intからIntegerへの変換でも数字が小さければインスタンスは生成されない
インスタンス生成を抑えるために小さな数字はあらかじめIntegerオブジェクトが作られていて使い回されるようになっているから
値オブジェクトみたいな感じ
コスト気にするよりオートボクシングを積極的に使って可読性の高いコードを書こう
635:デフォルトの名無しさん
18/07/25 22:46:30.24 GZRArLRs.net
>>603
ジェネリクスで型を指定すれば、型が間違ってたときにコンパイルエラーに
なってすぐに気づくことができるのだけれども
ジェネリクスで型を指定しないと、型が間違っててもエラーにならないのよ
実行してデータが処理されないとコードが間違ってるかわからぬのよね
エラーが起きないデータもあったりするとデバッグが超大変
ジェネリクスが使えるときは型を指定して使ったが良いよ
636:デフォルトの名無しさん
18/07/25 22:56:34.68 QfwTkRmU.net
>>607-608
>>コスト気にするよりオートボクシングを積極的に使って可読性の高いコードを書こう
>>ジェネリクスが使えるときは型を指定して使ったが良いよ
質問で丁寧に回答していただきさらにアドバイスまでいただき感謝です!
勉強になりますありがとうございます!
637:デフォルトの名無しさん
18/07/26 00:12:38.71 5ROtQy7H.net
>>592
それ原因が分かったぞ。(勘のいい奴なら既にわかっていると思うが)。
そのブログのページのソースのこう表示されてる個所あるだろ。
Iterator it = arr.iterator();
この部分の HTML のソースを見てみたらこうなってた。
Iterator<Integer> it = arr.iterator();
しかしこの通りに表示させたいなら HTML 文書の中ではこう書かねばならない。
Iterator<Integer> it = arr.iterator();
他の同じような記述の個所はこういう変換をやっているのにこの部分だけ忘れており
<Integer> 部分がブラウザによって HTML のタグと解釈されて丸ごと表示されない
状態になっていた、ということ。
638:デフォルトの名無しさん
18/07/26 00:23:57.38 Hk2Eswys.net
草
639:デフォルトの名無しさん
18/07/26 01:12:56.68 3Q0DG2FF.net
>>610
よく見つけられましたね凄いです!
どなたかがブログへご指摘されてくださったようで確認しようと再度HP確認したら既に修正されていました!
あまりの速さに2度驚きました
この質問スレにもブログにも勉強するのにとても助かっています
いつもありがとうございます
640:デフォルトの名無しさん
18/07/26 09:12:21.23 1RynmuAu.net
>>610
草
641:デフォルトの名無しさん
18/07/26 13:20:41.96 EM3EzxKL.net
./__.))ノヽ
.|ミ.l _ ._ i.) わしが指摘した
(^'ミ/.´・ .〈・ リ
.しi r、_) | ______
| `ニニ' / | | \__\___
___.ノ `ー―i´ | | |= |iiiiiiiiiii|
/⌒ヽ \____/\ | | | =. | !!!!!!!|
| ヽ____| \__. __ | | |三 |_「r.、
| // // ̄.\ //⊃ヾ) |__|_/( ) ̄ ))
ヽ ______//r_/| |.||⌒ヽ~〔 ̄ ̄! ̄ ̄ ̄/ ̄ ̄\((
642:デフォルトの名無しさん
18/07/26 20:19:44.88 l6j0Y1pF.net
定義されてるディレクトリ配下のログが誰かに�
643:Jかれてたら何もしないって処理作りたいんですけど、ファイルが誰かから開かれてるかを調べる方法ありますか?
644:デフォルトの名無しさん
18/07/26 20:22:42.75 l6j0Y1pF.net
古くなったログの削除の為に使用するためです
645:デフォルトの名無しさん
18/07/26 20:39:32.04 9i/IJhFr.net
自分でそのファイルを読み取り排他で開いてみるしかない
失敗したら他のプロセスがオープンしているということ
排他(副作用)なしでファイルのロック状態を知る方法はない
646:デフォルトの名無しさん
18/07/26 21:15:30.96 l6j0Y1pF.net
>>617
ありがとうございます。
明日試してみます!
647:デフォルトの名無しさん
18/07/26 21:33:54.42 ekiha7MK.net
うーんどうなんだろう、設計
648:デフォルトの名無しさん
18/07/27 02:20:59.11 O4NPrPXG.net
>>615
Linux の場合は fuser コマンドを使うと指定のファイルをオープンしているプログラムのプロセスIDが分かる。
何も出力がなければ開いているプロセスはない。
他のUNIX系OSにもこのコマンドはあるかも知れない。Windows の WSL にはこのコマンドはあった。
その他のOSではどうやるか知らないが、もし fuser コマンドがあるのならそれを使えば同じようにできるんじゃないかと思う。
Windows の場合は他のプロセスが開いている最中にリネームしようとするとエラーになるそうなのでこれを利用するという手があるようだ。
但し同じ方法はOSが違ったら使えない(例えばLinuxやUNIX系OSでは使えない。WSLはわからない)。
URLリンク(code.i-harness.com)
649:デフォルトの名無しさん
18/07/27 06:07:34.18 br8yoTOu.net
paiza.ioってローカルPCのファイルやフォルダ操作するコードは実行出来ないですか?
650:デフォルトの名無しさん
18/07/27 12:15:33.71 4+ImbG1U.net
>>617
ログを開くアプリケーションによってはロック状態を認識できませんでした。
FileChannelクラスのtryLookメソッドを使いました。
OSがcentosでLibreOfficeで開いてるときはロック状態でしたが、geditで開いたときはロックされてなかったです。
何か初心者がおかしやすいミスとかってありますかね。
もう諦めてるんですがgeditが特殊なんですかね
651:デフォルトの名無しさん
18/07/27 12:16:37.86 4+ImbG1U.net
gedit以外のテキストエディタでも同じでしたね
ロックの確認できません。
652:デフォルトの名無しさん
18/07/27 12:58:52.13 ki81FzEq.net
普通はしないよ。
一々ロックしてたら、たとえばGitなんか阿鼻叫喚の地獄になる。
653:デフォルトの名無しさん
18/07/27 13:04:46.00 4+ImbG1U.net
>>624
そうなんですね
654:デフォルトの名無しさん
18/07/27 13:26:56.82 EBOSMkzO.net
>>622
UNIX系OSではオープンしただけでは普通はロックまで掛からなくて、別途 flock() したり fcntl() でロックするようになっている。なので本当に必要な場合しかロックしないのが普通だ。
オープンしてるかどうかだけ確認したいなら fuser コマンドや lsof コマンドを使った方が楽だ。
Linux限定で良いなら /proc ディレクトリ以下を自分で探ってもできるけどね。
それだと多分本当にLinuxのみになるし fuser や lsof も Linux 用なら中で同じことしてるだろうから任せた方が良い。
655:デフォルトの名無しさん
18/07/27 14:29:19.42 4+ImbG1U.net
>>626
色々教えて下さりありがとうございます。
656:デフォルトの名無しさん
18/07/29 02:53:34.15 noej9t8s.net
javaのバージョンって1.8だったり8だったり表記が複数あるようですが何なんですかこれは
657:デフォルトの名無しさん
18/07/29 04:29:48.18 SHCnQYdt.net
なんなんでしょうね
658:デフォルトの名無しさん
18/07/29 05:54:37.87 Oaphdh9V.net
初見殺し
659:デフォルトの名無しさん
18/07/29 08:38:57.85 7lOBGcOb.net
>>628
Javaのバージョン
URLリンク(so-zou.jp)
意外と知らないバージョン表記・数字の豆知識
URLリンク(www.atmarkit.co.jp)
660:/articles/1003/26/news106.html 理由はよくわからないが、やはり営業的な理由なんじゃないだろうか。 バージョン番号が大きい方が他の製品よりも良いものであるかのような印象を与えられるから。 Perlなんかは(フリーソフトで誰にも売る必要がないためか)これの逆をやってしまい、大きな変更が あったのにほんのちょっとしかバージョン番号を上げなかったためにほとんど違いがないと誤解 された事があり、それでその後はバージョン番号の振り方のルールを変えた。
661:デフォルトの名無しさん
18/07/29 13:22:46.86 pFjYaTQt.net
>>621
ブラウザから、自分のPC 内にアクセスできたら、大変!
何でも盗み放題w
すべての情報が、どこかのサーバーに送られてしまう
662:デフォルトの名無しさん
18/07/29 21:11:31.52 JZa4OXPE.net
eclipseをphoton にしてワークスペースをそのまま引き継ごうとしたら実行できなくなっちゃった。どうすればいいか教えてちょ
663:デフォルトの名無しさん
18/07/29 21:23:30.06 JZa4OXPE.net
eclipseをphoton にしてワークスペースをそのまま引き継ごうとしたら実行できなくなっちゃった。どうすればいいか教えてちょ
664:デフォルトの名無しさん
18/07/29 21:46:32.56 sUhDPIHz.net
ごめんちょ
665:デフォルトの名無しさん
18/07/30 05:51:28.50 HJqNjAI+.net
>>634
${HOME}.eclipse
を削除してみたらどうだろ
workspaceをバックアップして
空にして、インポートで取り込むとか
666:デフォルトの名無しさん
18/07/31 23:16:57.30 ZNFzWxLv.net
初歩的な質問になるんですが異なる2つのクラスで1つの値を共有したいときってどういったやり方あります?
class a
String str
class b
a.setStr
class c
a.getStr
大分省略してますがこんなことをやりたいです。
実行順はbで更新した後にcで取得
667:デフォルトの名無しさん
18/07/31 23:22:07.36 3ipQI8/S.net
クラスbとcのメンバにaクラスのフィールドをもちbとcのコンストラクタでaを設定する
668:デフォルトの名無しさん
18/07/31 23:30:21.51 ZNFzWxLv.net
class b
a a
public b
a = new a
a.set
class c
a a
public c
a = new a
a.get
みたいな感じですかね?
この場合ってbとcでそれぞれ作ったaのインスタンスって別物扱いになりません?
669:デフォルトの名無しさん
18/07/31 23:31:13.26 0/QW8S54.net
>>639
外でnewして渡せ
670:デフォルトの名無しさん
18/08/01 00:58:32.44 r0ZYJdIw.net
>>640
どんな感じです?
できたらイメージ貰いたいです
671:デフォルトの名無しさん
18/08/01 06:25:06.11 IkENlkBK.net
new a
new b(a)
new c(a)
672:デフォルトの名無しさん
18/08/01 07:48:14.65 3Ruau8S/.net
jdk11 ea でローカルswing アプリテストしたいのですが、
・jdk11 ea openjdkを取ってくる
・展開して適当なパスに置く
・path/to/openjdk/bin/java -jar myapp.jar
で起動出来るのでしょうか?
673:デフォルトの名無しさん
18/08/01 10:26:14.54 198aEqhp.net
やってみりゃいいじゃん
674:デフォルトの名無しさん
18/08/02 02:22:35.17 reX89mAv.net
通信の優先度を決める事はできますか?
でかいファイルを送受信するけど、他のアプリに影響を出したくなくて、
低い優先度で送りたい。
675:デフォルトの名無しさん
18/08/02 02:39:35.74 vClc7nAi.net
>>645
自分でゆっくり送ればいいのでは?
676:デフォルトの名無しさん
18/08/02 07:50:56.22 yvP4ulwr.net
プロセス・スレッドの優先度は、設定できないの?
677:デフォルトの名無しさん
18/08/02 08:06:14.31 SwjRc7UR.net
プロセスの優先度は知らんがスレッドの優先度なら
URLリンク(docs.oracle.com)
// コードが走ってるスレッドの優先度を変える
Thread.curren
678:tThread().setPriority(priority); // 0(MIN_PRIORITY) ~ 10(MAX_PRIORITY) // 生成したスレッドの優先度を変える Thread thread = new Thread(runnable); thread.setPriority(priotrity); thread.start();
679:デフォルトの名無しさん
18/08/02 08:10:14.12 lJdnLKf/.net
通常プロセスはOS側で管理するべきと思ってるからあまり考えたことないな
どうしてもやりたいなら通信を管理するプロセスを作れば良い
つまり>>646
680:デフォルトの名無しさん
18/08/08 20:48:19.34 Y8NXA7MO.net
アンドロイドアプリを作りたいのですが
数か月の間、メンターになってくえれる人を探そうと思ったら
どんなサイトで募集すればいいのでしょうか?
681:デフォルトの名無しさん
18/08/08 21:34:50.44 hdmbPKpc.net
俺がなってやろうか?
3ヵ月240万円でいいよ
682:デフォルトの名無しさん
18/08/08 21:38:15.67 oyXSOhRB.net
メンターなんて言葉一般的に使うの?
自己啓発セミナーみたいでいやだなあ
あ、ボクはアナルオナニーインストラクターです
683:デフォルトの名無しさん
18/08/08 21:40:40.73 Y8NXA7MO.net
基本料金1か月3万円でお願いします
あとはオファーにより別途請求というシステムで
684:デフォルトの名無しさん
18/08/08 22:33:01.96 D/rM6Nrn.net
マンツーマンで教えるとなると時給の最低ラインは3000円だから
月3万円だと月10時間、1日15分ぐらいだな
685:デフォルトの名無しさん
18/08/09 10:10:38.81 gFPymi4k.net
専属の人を雇うとなると家庭教師雇うみたいなもんだから高くなるのではないか?
本やネットで調べながらでも何れはできるようになる事についてそこまで投資する必要があるのか?
何らかの期限があるなどして早く覚えないとまずいということか?
686:デフォルトの名無しさん
18/08/09 10:33:41.65 SPEbgWbN.net
パソコン教室に行って来い
687:デフォルトの名無しさん
18/08/09 16:50:59.46 bgFYGL9Q.net
synchronizedListはイテレータがスレッドセーフじゃないといいますが
for(int i=0;i<list.size();i++)
Element e = list.get(i);
もしsizeの増減が無い場合、こんな書き方はスレッドセーフに全要素にアクセスできますか?
688:デフォルトの名無しさん
18/08/09 18:59:15.93 e0VFp9K8.net
できません
sizeを確認してからgetするまでに要素数が変化する可能性を排除できていません
689:デフォルトの名無しさん
18/08/09 18:59:52.71 e0VFp9K8.net
あ、ごめん
サイズ増減なしって条件書いてあったね
690:デフォルトの名無しさん
18/08/09 19:02:22.63 e0VFp9K8.net
それはサイズが既知でgetしか使ってないのと同じで安全
ていうか要素が変化しないならスレッドセーフではないLinkedListでさえ安全に使えるでしょ
691:デフォルトの名無しさん
18/08/18 22:43:41.07 01sV26bM.net
URLリンク(github.com)
ここに出てくる"Wire"ってどういう意味ですか?
WireTextだの、WireEchoだの。
たぶんプログラミング界隈の用語だと思うんですが
692:デフォルトの名無しさん
18/08/18 23:10:04.14 ddghJ7gy.net
ネットワークを繋ぐ線の概念なんじゃないかな
知らんけど、それっぽいと思った
693:デフォルトの名無しさん
18/08/18 23:30:49.48 01sV26bM.net
meta -> meta.write(() -> "tid")
こういう記法は何を意味しますか?
(arg) -> code
みたいなのはラムダ式の説明で出てきますけど、metaはカッコがついていません
694:デフォルトの名無しさん
18/08/18 23:35:11.85 01sV26bM.net
Wire Message = 電報 ⇒ 通信されるデータ
WireType.TEXTとかWireType.BINARYがあるから、たぶんまさにそれだけの意味。
Network = Wireくらいの意味でこの人は使ってそうです
695:。
696:デフォルトの名無しさん
18/08/18 23:39:59.88 ddghJ7gy.net
>>663
引数が1つのときはカッコを省略できるんよ
697:デフォルトの名無しさん
18/08/18 23:58:07.43 01sV26bM.net
数千もの通信を同時処理する高性能なネットワークライブラリを探してるんですが、
何が良いんでしょう?Nettyは内容が難しすぎるんですが・・・。
難しいというか、必要としてるのは単にバイナリを送受信できればいいだけなので、
無駄に高機能過ぎる。
しかし、KeepAliveとか、サーバーが常駐してメッセージを受信してイベント起動、
とかは必要で。ネットワークライブラリの中身なにやってるかあまり詳しくないんですが。
Chronicle-Networkも良く分からない。
// the tid must be unique,
final long tid = tcpChannelHub.nextUniqueTransaction(System.currentTimeMillis());
System.currentTimeMillis()を使ったら、複数クライアントにおいてtidが重複するけど、
それでユニークといっていいのかどうか。
ちょっと情報が少なすぎるのでこれも無理そう。高速らしいんですが
Kryonetは、性能不足ですね。アップデートもされてません。
やはりNettyを頑張るしかないかもしれません。
698:デフォルトの名無しさん
18/08/19 00:00:33.27 bn6Y5y/t.net
>This comes at the cost of scalability for large number os connections. In this situation, this library should perform at least as well as netty.
これは多数のコンピューターからの同時接続ではNettyと同等の性能しかでない、
ということでしょうか?
想定してるのは1コンピューターとの高速な通信ということでしょうか。
699:デフォルトの名無しさん
18/08/19 00:24:40.63 wM6XArJ0.net
WebSocket とかじゃないの?
700:デフォルトの名無しさん
18/08/19 10:44:02.78 bn6Y5y/t.net
やっぱり高性能なJavaのネットワーキングライブラリはNettyが有力のようです。
あと、Wire Messageは、たぶん「頭4バイトにINT入れて、次8バイトにLONG入れて」みたいな
バイト配列にデータを敷き詰めてく感じの行為をWireというのだろうと。
701:デフォルトの名無しさん
18/08/19 11:22:52.85 yNrD+B/d.net
よかったね(LOL)
702:デフォルトの名無しさん
18/08/19 15:48:44.36 bn6Y5y/t.net
PooledUnsafeDirectByteBufとは何ですか?
Handlerでbyte[]やByteBufなどクラスを限定できますが、
単にbyte[]を使うことと比べてByteBufやPooledUnsafeDirectByteBufは何かメリットがありますか?
703:デフォルトの名無しさん
18/08/19 16:16:30.55 bn6Y5y/t.net
どうやら単にbyte[]を送りたい場合でもByteBufを通すのが普通みたいですね
でもそれだとByteBufを作るときもそこからbyte[]を読み取るときもコピー操作があるようで遅そうです
通信に比べればメモリ操作による遅れは微々たるものかもしれませんが
Nettyより高速と謳うライブラリがありますがやはりバッファ周りの問題を指摘してましたが
これですかね
704:デフォルトの名無しさん
18/08/20 08:34:48.22 nWwgLLcF.net
ソース読んではいないけど、byte[]のWrapperなんじゃないの?
渡されたbyte[]を丸々コピーするような、あなたのような超初心者な実装はしていないと思うよw
そもそも、byte[]で送るといっても、自分でBufferのサイズを決めたり、通信環境を考慮したり、いろいろやらなきゃいけない。
だから、そういった最適化をByteBufのサブクラスたちは提供してくれているのでしょう。
705:デフォルトの名無しさん
18/08/20 16:30:51.58 x31M90y2.net
こういうコードがあった時、logが呼ばれてもデバッグモードでなければ
意味が無いけど、AnyHeavyMethodは計算されちゃうんでしょうか。
それとも最適化で実行されません�
706:ゥ? //in some method log(""+AnyHeavyNoEffectMethod(o)); public void log(String s){ if(isDebugMode()) System.out.println(s); }
707:デフォルトの名無しさん
18/08/20 20:31:28.54 7cywDiIN.net
JITコンパイラは副作用がないことをどこまで調べるんだろうね
708:デフォルトの名無しさん
18/08/20 20:50:34.41 DUHqVJSw.net
>>674
isDebugModeの返す値が定数で、かつそこに登場してる全てのメソッドがインライン展開されれば実行されないんじゃない?
Javaって基本的に大規模アプリケーションに最適化されてて、局所的な速度よりも全体的な安定性やメモリ消費量を重視する傾向があるから、
あまり最適化には期待しないほうがいいよ
709:デフォルトの名無しさん
18/08/20 22:27:44.88 trJY4lAL.net
AnyHeavyNoEffectMethodが重い処理で、Java8以降ならラムダ式使うんじゃね?
log(() -> "" + AnyHeavyNoEffectMethod(o));
public viod log(Supplier<String> s){
if (isDebugMode())
System.out.println(s.get()); // ここでAnyHeavyNoEffectMethodが実行される
}
710:デフォルトの名無しさん
18/08/21 08:43:36.63 VaNiE4c6.net
いいね。そっくりそのままDecoratorにもなってるからすっきりする。
711:デフォルトの名無しさん
18/08/21 09:27:43.13 R/vyiArT.net
それJavaの場合はラムダ内で外のミューダブルな変数を参照できないから微妙
712:デフォルトの名無しさん
18/08/21 10:05:53.79 VaNiE4c6.net
どーーしても必要なら、観測したい変数をHeapに逃がせばいい(オブジェクトにぶら下げるとか)わけだけど。
Functional信者は怒りMaxだろうな。
713:デフォルトの名無しさん
18/08/21 12:07:34.45 LMQ5YiiU.net
>>679
変態すぎるだろ何やろうとしてるんだよ
714:デフォルトの名無しさん
18/08/21 12:57:56.56 5BiPsrnL.net
>>681
そう思うだろ?
これでコンパイルエラーなんだよね
int x = 1;
log(() -> x);
x += hoge();
log(() -> x);
715:デフォルトの名無しさん
18/08/21 15:25:34.33 LMQ5YiiU.net
>>682
当たり前だろ
何考えてんだ
716:デフォルトの名無しさん
18/08/21 15:30:01.19 LMQ5YiiU.net
あ、わかった
717:デフォルトの名無しさん
18/08/21 17:51:15.05 NYseXeYs.net
>>682
完全に使い方の問題だし、マルチスレッドの問題もあるし。
JavaScriptとかできちゃうけど、それやってどうなってもしらないぞ、と。
718:デフォルトの名無しさん
18/08/21 17:55:00.54 IftEBw66.net
ログなら普通にある状況だろ
それを使い方の問題というならラムダをログに使うという>>677の発想が間違ってるわ
719:デフォルトの名無しさん
18/08/21 20:09:37.16 NYseXeYs.net
ないよ。AOPとかDecoratorとか、ラムダが登場する以前からずっとやってきている話。
ラムダはそれをちょっとエレガントにできるようにしただけ。
だから、使い方の問題なんだよ。
720:デフォルトの名無しさん
18/08/21 22:05:33.53 flSi4mUH.net
>>687はミュータブルな変数を一切ログ出力してないの?
自身を持って無いと言い切れるなら偉そうなこと言っていいぞ
721:デフォルトの名無しさん
18/08/21 22:09:43.83 flSi4mUH.net
ちなみにログ出力にJavaのラムダが適していないという話であって、ラムダがミューダブルな変数を参照できるべきだなんて誰も言ってないけど
>>687は勘違いしてる
722:674
18/08/22 22:13:46.15 xSbYn5li.net
簡単な実験コード書いてみたけど最適化されませんね。
private static final boolean debug = false;
@Test
public final void testOptimization() {
final long start = System.currentTimeMillis();
log(anyHeavyNoEffectMethod() + "");
final long end = System.currentTimeMillis();
System.out.println((end - start) + "ms");//50ms
}
private static final void log(final String s) {
if (debug)
System.out.println(s);
}
private static final long anyHeavyNoEffectMethod() {
final Random r = new Random();
long total = 0;
int loop = 1000 * 1000;
for (int i = 0; i < loop; i++)
total += r.nextLong();
return total;
}
723:デフォルトの名無しさん
18/08/22 22:39:39.44 xSbYn5li.net
ラムダ式の方はanyHeavyNoEffectMethodが呼ばれません。
しかし、指摘のようにミュータブルな変数を渡せません。
log()の実装を二種類用意して使い分けていくのが妥当な気がします。
デコレーターパターンで解決できるんですか?
724:デフォルトの名無しさん
18/08/22 22:48:19.72 xSbYn5li.net
このような頻出のパターンについてJITは最適化すべきだと思います。
たぶん、それが一番妥当な解決策です。
副作用が無い事を確認する機能は、JITに既にありそうなものです。
少なくともある程度の範囲で副作用が無い事を確認できるはずです。
どうでもいいんですがこんなパターンにはJITは最適化を見せました。
for(){
list.add(i);
list.remove(i);//追加したものを即削除する
}
725:デフォルトの名無しさん
18/08/22 22:51:11.60 z4qSfGT7.net
オーバーロードでいんじゃない?
ログの出力ってきほんStringじゃん
726:デフォルトの名無しさん
18/08/25 12:01:51.59 FONLvq+3.net
匿名クラスとかでスタック領域の変数を参照できますが、匿名クラスのオブジェクトが破棄されるまでそれらは生存するということですか?
public void method(Observable obs){
Object o = ...;
EventHandler handler = new EventHandler(){
@Override
public void handler(){
System.out.println(o);
}
}
obs.setOnAction(handler);
}
727:デフォルトの名無しさん
18/08/25 12:14:05.20 logoA4dK.net
>>694
気のせい
実は無名クラスの中に隠しフィールドが生成されてoの値をコピーしている
ちなみにoは暗黙的にfinalになっており、後でoを書き換えようとするとコンパイルエラー
そこまでするならScalaやKotlinやC#みたいに最初からoをヒープに作っちまえよと思わなくもないが、
この中途半端な仕事かJavaクォリティ
728:デフォルトの名無しさん
18/08/25 13:05:07.70 KMExyDFm.net
>>694
そうなるよ、参照関係を図で表すとこうな感じでしょ
URLリンク(light.dotup.org)
オレンジが変数
緑がオブジェクト
メソッドを抜けてローカル変数o, handler, obsがなくなっても
Observable → EventHandler → Object
の参照は消えない
引数に渡してるObservableはメソッドの外で
変数から参照されてるだろうからメソッドを抜けても
破棄されないよ
729:デフォルトの名無しさん
18/08/25 13:38:45.65 QXNuAaPs.net
>>696
691が気にしてるのはローカル変数o自体の寿命でしょ
実際には無名クラスの外側にある変数oとhandlerの中で参照してる変数oは別の実体だから問題ない、が答えだよ
後者は>>695の通り無名クラスの隠しフィールドであり、インスタンス生成時に値をコピーしている
この仕様だと、後で内側または外側でoの値を書き換えてしまうと辻褄が合わなくなるから、
oを後で書き換えてはいけないという制限が必要なの
730:デフォルトの名無しさん
18/08/26 18:14:43.90 oLy9klNt.net
ここを見るとRSA系は2048までしかありません。4096等だとRSA鍵による暗号化ができないということですか?
その場合、非標準のライブラリ等で解決できますか?
URLリンク(docs.oracle.com)
RSA/ECB/PKCS1Padding (1024、2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024、2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024、2048)
731:デフォルトの名無しさん
18/08/27 09:33:01.48 n6GSDZ7+.net
>>698
URLリンク(qiita.com)
732:デフォルトの名無しさん
18/08/27 09:47:55.19 n6GSDZ7+.net
強度の強い暗号化は輸出制限あるから気を付けてね。
うっかりノートPCにセットしたまま他国へ持って行こうとするとバレた時に大変まずいことになるかも知れない。
733:デフォルトの名無しさん
18/08/27 17:31:52.62 n/TwkHD5.net
jre1.8の最近のバージョンでデフォルトで強度無制限になったようです。
とはいえ、java8の仕様上、2048までしかサポートする必要は無いようです。
実装によってサポートしているかもしれません。
734:デフォルトの名無しさん
18/08/27 17:33:10.48 n/TwkHD5.net
このようなコードがあった場合、tは生存しますか?
tはどこからも参照されてないとします。
//in some method
Thread t = new Thread(){...};
t.start();
return;
735:デフォルトの名無しさん
18/08/27 20:27:36.23 QkMU0TtV.net
>>702
試してみた
URLリンク(paiza.io)
結果からわかることは
・メソッドを抜けてもスレッドが終了するわけではない
・スレッドが終了しないならばプロセスは終了しない
・ローカル変数がなくてもスレッドを取得できる
作成したスレッドのオブジェクトはどこかに保持されるみたいね
tは生存します、が答えっす
736:デフォルトの名無しさん
18/08/27 20:52:27.61 l2rfNjjd.net
変数tを通してアクセスできなくなるだけだな。
737:デフォルトの名無しさん
18/08/27 21:06:10.81 ngNgILlM.net
threadは、main thread同様garbage collectionのrootとして扱われるそうなので、生存しまする
738:デフォルトの名無しさん
18/08/28 10:11:17.88 nen4cHNL.net
ただし、daemonthreadは除く。
739:デフォルトの名無しさん
18/08/29 16:44:32.01 V/7UzzKh.net
Eclipseとかいう汚物にJavaFXを入れたく思いマーケットプレースでjavafxで出てくるe(fx)clipseをインストールしようとしたところ長時間待たされた挙句にエラーが出ました
どうすればいいでしょうか?
740:デフォルトの名無しさん
18/08/29 16:50:03.76 V/7UzzKh.net
URLリンク(imgur.com)
741:デフォルトの名無しさん
18/08/29 18:31:24.16 bzaK3e7y.net
>>707
JavaFXは廃止されたから使っちゃダメ
742:デフォルトの名無しさん
18/08/29 18:35:28.97 bZ2D0xRL.net
諦めなさい
743:デフォルトの名無しさん
18/08/29 20:23:25.71 QbSkJrbm.net
マジで?!廃止されるのswingかと思ってた!
744:デフォルトの名無しさん
18/08/29 20:35:24.50 LfUbbQ2v.net
厳密には廃止ではなく分離とされてる。
あとJava8が2020年までサポートだから、2020年までは1.8系のjreがあれば使える。
745:デフォルトの名無しさん
18/08/29 20:44:48.17 LfUbbQ2v.net
そもそもJavaの未来はどうなるのか。JREが有償化される。
OpenJDKはインストーラや自動アップデータが提供されるのか。
JavaFXは単体のライブラリとして独立できるはずだが、誰かがやるのかどうか。
現状だと、何やら面倒なインストール手順が必要なようで、
デスクトップアプリに使われるであろうJavaFXにとって致命的なはず。
mavenとかを使ってアプリに気軽に同梱できるものになればいいのだが。
746:デフォルトの名無しさん
18/08/29 20:48:44.47 zRPnCBM0.net
JavaFX will continue to be supported in the future by the company Gluon as a downloadable module in addition to the JDK.
747:デフォルトの名無しさん
18/08/29 20:49:34.59 zRPnCBM0.net
URLリンク(gluonhq.com)
748:デフォルトの名無しさん
18/08/29 20:51:13.97 zRPnCBM0.net
このスレではJavaFXをオヌヌメします
JavaFXをオヌヌメしないのはoracleのコウサクイン
749:デフォルトの名無しさん
18/08/29 21:01:34.66 CmXgIFV4.net
JavaでデスクトップのGUI環境自体どうなんだ?
750:デフォルトの名無しさん
18/08/29 21:01:39.61 LfUbbQ2v.net
downloadable moduleってなんだろうな。
そもそも後方互換性を捨てて高速リリースとか言ってるのが怖くて仕方ない。
開発者が最新版に対応したって、エンドユーザーが最新版を持ってるか分からない。
どのバージョンに向けて作ればいいんだ?
751:デフォルトの名無しさん
18/08/29 21:02:52.35 LfUbbQ2v.net
いやクロスプラットフォームGUIという概念は重要でしょ。
752:デフォルトの名無しさん
18/08/29 21:07:1
753:6.02 ID:LfUbbQ2v.net
754:デフォルトの名無しさん
18/08/29 21:13:19.32 LfUbbQ2v.net
AndroidでもJavaFX動くみたいだし、クロスプラットフォーム性という面で
やはり一番優れてるよJavaは
ちなみにJavaやKotlinのコードをネイティブコードにするコンパイラがあって
iPhoneでもJavaやKotlinのソースコードで動かせるみたいだぞ
ちょっと前までiPhone用のJVMもあったんだけどな
755:デフォルトの名無しさん
18/08/29 21:16:31.19 LfUbbQ2v.net
URLリンク(www.oracle.com)
Java8 個人ユーザーの公式アップデート終了日 2020-12
このときまでにOpenJDKやGluonのインストーラが登場していなければ困る。
そしてそれが自動アップデータを搭載していなければ。
ところが自動アップデータ搭載されてても、後方互換性を捨てたアップデートを勝手にされると困るw
困りまくりだ
756:デフォルトの名無しさん
18/08/29 21:22:30.87 LfUbbQ2v.net
OpenJDKに自動アップデータが提供されたとする。
OpenJDKのアップデートがアプリのアップデートを先行する
→勝手に互換性を捨てたアップデートが来てアプリが動かなくなる。
アプリを最新版に対応してリリースしてもアプリのアップデータは動かないw
アプリのアップデートが先行する
→エンドユーザーのOpenJDKが古くて動作しない
だから、互換性を捨てて高速リリースとかいってるのはほとんど意図的なJava界隈への攻撃。
757:デフォルトの名無しさん
18/08/29 21:26:20.75 LfUbbQ2v.net
一番欲しいのは、Java8のサポート継続&自動アップデート継続&互換性の維持。
APIを変更するならdeprecatedの期間をある程度とってくれないと無理。
高速リリースがうれしい人が居るのか?
758:デフォルトの名無しさん
18/08/29 21:41:37.34 zRPnCBM0.net
.netと同じ道を歩んでるようにみえて
microsoftの.netはMITライセンス
759:デフォルトの名無しさん
18/08/29 21:46:25.67 zRPnCBM0.net
javaはもうおしまい
760:デフォルトの名無しさん
18/08/29 21:59:08.27 LfUbbQ2v.net
OpenJDKのリンク例外つきGPLは十分だろ。
OpenJDKにおいて、互換性を考慮したアップデートが行われ、自動アップデータが提供されるか。
GPLだから誰でもそのプロジェクトをやれる。
761:デフォルトの名無しさん
18/08/29 22:00:44.61 zRPnCBM0.net
mitライセンス、bsdライセンス以外は不要
762:デフォルトの名無しさん
18/08/29 22:02:20.50 LfUbbQ2v.net
>>723の解決法はこうだ
OpenJDKの次期バージョンで現在のアプリが問題を起こすかチェックする。
→問題があるならOpenJDKがアップデートされる前にアプリをアップデートしておく。
そのアプリの修正は、現在のOpenJDKと次のOpenJDK両方で動作する事を確認する。
763:デフォルトの名無しさん
18/08/29 22:04:08.95 zRPnCBM0.net
javaを棄てれば解決
764:デフォルトの名無しさん
18/08/29 22:07:18.69 LfUbbQ2v.net
もうJavaで書いたアプリがあるし、Javaに慣れてるから。
それに、.NETに移ったとして、同じ事が起こらない保証があるのか?
実は俺はこの問題に対する根本的解決策を知ってる。うまくいくかは知らないが
それも含めて考えると、やはりJavaを続けようと思える。
765:デフォルトの名無しさん
18/08/29 22:13:52.55 bGCoQXPI.net
>>729
どうチェックすんの?
766:デフォルトの名無しさん
18/08/29 22:31:53.32 LfUbbQ2v.net
リリース前でもビルドが公開されてるだろうと思ったけど。
プラットフォーム系でプレビューリリースとかアーリーアクセス的なものを提供して
予め対応してもらおうというアイデアは一般的なもので、オラクルがOpenJDKをサポートするなら
たぶんやるだろう、というか既にやってると思うけど。
JDK 11 Early-Access Builds
URLリンク(jdk.java.net)
767:デフォルトの名無しさん
18/08/30 00:12:55.41 2PPyJx3c.net
大前提の認識が間違ってるぞ。
Java11以降においては無償のスタンドアロンなJREは無くなるんだよ。
デスクトップ用途なら開発者自身がアプリにJavaランタイムを組み込んで配布することが推奨される。
そして、OpenJDKはエンドユーザーが自分で個人�
768:[末にインストールするようなことを想定したものではない。 開発者がシステムに元々入っているのOpenJDKに依存してよいのは、業務システムなどで 開発者が完全に実行環境のOpenJDKディストリビューションのバージョンや構成を制御できる場合のみだ。
769:デフォルトの名無しさん
18/08/30 00:46:49.22 XYFOdQAI.net
URLリンク(docs.oracle.com)
>自己完結型アプリケーション・パッケージは、プラットフォーム固有で、ビルドしたシステムと同じシステムにのみ作成できます。
各プラットフォーム向けにビルドしなきゃいけないようだ
>自己完結型アプリケーションには、自動更新の組込みサポートがありません。
アプリのアップデータで簡単にアップデートできるなら問題ではない。
アプリへのJREの組み込み手段がサポートされて、
そこでJavaFXがサポートされるなら、問題無い気がする。
JavaFXはそこでサポートされなきゃ意味が無いし。
770:デフォルトの名無しさん
18/08/30 00:57:29.40 XYFOdQAI.net
>Java SE 8は、デスクトップ展開を対象とした最後のJava SEリリースです(Java Web StartやスタンドアロンシステムJREなど)。
こういう文言もあるから、Java11以降、OpenJDKでJavaFXみたいな
デスクトップ展開がサポートされるのかどうか。Java8最終版を組み込んで使い続けるか
Gluonに期待するか。
771:デフォルトの名無しさん
18/08/30 12:01:02.32 rv0GkEtx.net
初心者だけどJavaFXでFTPサーバーとやりとりして追加したり一覧表示してダウンロードしたりするwindows用アプリを作りたいんだ
apache commons netというライブラリを使ってやろうと思うけどviewにファイルを入れるにはどうすれば良いんだろう?
入れた後はjavaからviewをインスタンス化してその中の変数の値(ファイルのパスかな?)を取り出してって感じでなんとかなりそうだけど...
本当に何も分からない状態で、何か良い勉強方法は無いかな?
FTPサーバーについても素人に近いよ
772:デフォルトの名無しさん
18/08/30 12:06:53.68 Qomnyyns.net
素人過ぎて話にならないな
773:デフォルトの名無しさん
18/08/30 12:59:41.93 A5Nytyjy.net
そういや今はJavaは標準のライブラリでFTP接続してアップロードとか楽にできるクラスあるのかな?
ダウンロードだけはURLクラスでできるの知ってるが。
774:デフォルトの名無しさん
18/08/30 21:21:59.87 XYFOdQAI.net
viewにファイルを入れるってなに?
TableViewとかTreeViewクラスにアイテムを表示する方法ならチュートリアルあるでしょ
775:デフォルトの名無しさん
18/08/30 21:23:54.73 XYFOdQAI.net
ああ解読できたかも
要するにGUIにアプリから値を設定、ないし
アプリからGUIに値を設定するにはってことでしょ?
てかGUIってそういう使い方しかないし。
そんなのぐぐればいくらでも出てくるのでは。
URLリンク(docs.oracle.com)
776:デフォルトの名無しさん
18/08/30 22:12:54.72 XYFOdQAI.net
訂正
人→GUI→アプリ
アプリ→GUI→人
この流れがやりたいってことだとおもわれる
777:デフォルトの名無しさん
18/08/30 23:38:43.13 8yCH8Wm6.net
>>742
そうそんな感じ
全然イメージ出来ん
どうやって起動させるの?
でも公式ドキュメント見やすそうだねありがとう
778:デフォルトの名無しさん
18/08/31 00:25:08.31 tMQ4ovnC.net
Project Loomを急ぐんだ!
はやく第一級継続を書かせるんだ。
どうか限定じゃありませんように
779:デフォルトの名無しさん
18/08/31 01:00:04.22 CSMn2BX4.net
イメージできんってもなあ・・・
GUI部品クラスが提供されてて、何らかの値の設定方法、取得方法があるだけじゃん。
StageやSceneクラスという、GUI全体を意味するクラスも提供されてる。
そこにGUI部品を積み上げてくだけだぞ。
780:デフォルトの名無しさん
18/08/31 01:09:01.54 CSMn2BX4.net
起動って・・・IDEのプロジェクトアーキテクチャの選択でfx系選べば何もしなくても
GUI立ち上�
781:ェるでしょ
782:デフォルトの名無しさん
18/08/31 08:28:19.25 XwawDSyV.net
>>746
webアプリならサーバー起動させてコントローラにある接続用のurlをブラウザに入れれば始めれるじゃん
これはメイン関数なくても行けるんでしょ?起動ボタンあるの?
783:デフォルトの名無しさん
18/08/31 09:09:35.21 G30RIEnt.net
何かの障害持ちだと理解の過程が通常と違う
彼らにネットは不向きだと思う
784:デフォルトの名無しさん
18/08/31 10:00:14.28 lv4qnKPx.net
お前らすぐそうやって……
785:デフォルトの名無しさん
18/08/31 10:43:19.14 s5ujzdS3.net
なんというか、Windowsならftpアプリなんかわざわざ作らんでもWebブラウザやエクスプローラでURL指定して開いちゃえばいいような気がするが・・・
あ、とにかく作ってみたいのか。
786:デフォルトの名無しさん
18/08/31 20:47:37.72 jQ6ZKbRR.net
>>750
ピュアな ftp ならプロトコルも対して難しくもないからネットワークの練習にはちょうどいい
787:デフォルトの名無しさん
18/09/01 00:04:26.42 kDvfeVra.net
gluonとopenjfxが両方javafx11ビルドしてるけどこれ同じバイナリだろうか?
788:デフォルトの名無しさん
18/09/01 10:46:03.05 faUndSgH.net
>>5
8のreplaceは正規表現を使ってて馬鹿みたいに遅いから気をつけろ
789:デフォルトの名無しさん
18/09/01 10:50:10.09 8XWt4TWp.net
>>752
JavaFXはもうJavaの一部ではないのでこのスレのスコープ外だよ
専用スレか公式フォーラムで聞きなさい
790:デフォルトの名無しさん
18/09/01 11:18:35.81 4jvmXnIZ.net
>>753
それはreplaceFirst()だろ
791:デフォルトの名無しさん
18/09/01 13:34:55.66 tt1XTLVx.net
調べてみた
@since 1.5
replace(CharSequence target, CharSequence replacement)
@since 1.4
replaceAll(String regex, String replacement)
@since 1.4
replaceFirst(String regex, String replacement)
replaceは正規表現使ってなかった
792:デフォルトの名無しさん
18/09/01 22:52:18.30 6Yw3sf7c.net
>>754
元からjavaの一部じゃないから
793:デフォルトの名無しさん
18/09/21 23:35:33.58 6Tz3djX7.net
資格に関する質問ってしてもOK?
Oracleの「Java SE 8 Silver」の試験勉強をしようと思うんだけど、参考書に迷ってる
4月からjavaを学習してる程度の人が「徹底攻略 Java SE 8 Silver 問題集」をやるのは難易度高い?
書いてて宣伝っぽい文章になったのはごめん
794:デフォルトの名無しさん
18/09/22 07:41:38.75 r0UgUCyq.net
NG
795:デフォルトの名無しさん
18/09/27 05:16:42.90 lxTijohv.net
java SE 11 キテター
796:デフォルトの名無しさん
18/09/27 09:12:53.75 rZRe7wqK.net
有料だから注意しろよ
無料で落とせるやつはちゃんとLAに「評価と開発以外の目的に使うな」と書かれてる
そんな大事なことをダウンロードページに明記してなくてLA読まないと分からないようにしてるのは流石天下のオラクル様ですわ
797:デフォルトの名無しさん
18/09/27 23:41:43.99 vISpszsR.net
OpenJDK11があるじゃん。そのうちAdapt OpenJDK11もでるだろ。
798:デフォルトの名無しさん
18/09/28 11:03:15.31 2WodH1m0.net
JDK11が多すぎて混乱しそう
799:デフォルトの名無しさん
18/09/29 00:56:04.15 kyybLiyB.net
だいたいダウンロードページにOTN開発者ライセンスに変わったって書いてあるし
800:デフォルトの名無しさん
18/09/29 18:23:46.96 o+PWeM92.net
JavaでJson読ませるの、どのライブラリが使い勝手いい?
なんかいろいろありすぎて困る
801:デフォルトの名無しさん
18/09/29 22:43:49.26 tgpIib8y.net
>>765
JSR 374がjaxpに似せてるから学習コスト低いよ。
URLリンク(javaee.)
802:github.io/jsonp/
803:デフォルトの名無しさん
18/10/03 01:25:23.37 9ie+5iaR.net
質問です。
下記のコードで、
URLリンク(ideone.com)
出力が0と0の間で2行開いてしまっているのですが、これはなぜでしょうか?
System.out.printlnをSystem.out.printにすると空白は出ないのですが…。
804:デフォルトの名無しさん
18/10/03 01:59:25.15 VtwiWIya.net
区切り文字を{},の3文字にしてsplitしたからでしょ。
805:デフォルトの名無しさん
18/10/03 07:18:02.71 3B507mk5.net
>>767
空文字列が入ってるから、フィルタするなりで
URLリンク(paiza.io)
806:デフォルトの名無しさん
18/10/03 20:33:31.74 Yoi2jO2M.net
正規表現か書式を見直したほうがいいんじゃないの?
807:764
18/10/04 00:11:26.33 smFA2GkF.net
>>768
>>769
>>770
返信ありがとうございました。
また質問させて頂くかもしれませんが、よろしければその時もまたお願いします。
808:デフォルトの名無しさん
18/10/04 11:58:36.08 YAdWzVOj.net
URLリンク(acro-engineer.hatenablog.com)
>MyProtocolClientHandler extends ChannelInboundHandlerAdapter
Inbound 受信時に使用される処理
Outbound 送信時に使用される処理
という理解なんだけど、クライアント側のInboundはレスポンスを受信するときに動くということ?
でも送信時のコードが書かれてるようで、分からない。
NettyのInbound, Outboundとは?
809:デフォルトの名無しさん
18/10/04 13:51:17.62 k+Ofe9B1.net
Inbound:中国人の観光客
Outbound:日本人の海外旅行
810:デフォルトの名無しさん
18/10/04 14:09:27.89 YAdWzVOj.net
ああわかりました
channelActiveは返信等を受け付けれるような状態になった時に呼び出されて、
それはinbound,outbound関係無いってことですね
パイプラインのハンドラーというより、メッセージ送信の
コントローラー的なものがそこに書かれてるということですね
たまたまハンドラのイベントにそういう処理が書かれてる
811:デフォルトの名無しさん
18/10/06 11:51:41.21 mwcXVcDx.net
URLリンク(netty.io)
> intercept operations and also state updates
この部分どういう意味ですか?intercept operationとは?
DuplexHandlerはパイプライン上でどういう順序で実行されますか?
受信時と送信時で実行して欲しい順番が異なる場合どうすれば?
812:デフォルトの名無しさん
18/10/06 19:22:07.94 3cjxIhmP.net
Java SE API & ドキュメント
URLリンク(www.oracle.com)
Java11の日本語ドキュメントはいつごろ出てくるのでしょうか?
813:デフォルトの名無しさん
18/10/08 07:44:21.00 fU+WK0rO.net
bronzeの問題集やっててイライラしてきたんだけど、問題になるようなコードは基本的に書くなってことでいいんですよね?
&&||の右側にインクリメント演算子書いたから場合によって評価されないとかif文の中身1行しかないからカッコ省略したら読みづらくなってるとか
問題として出されるくらいヒューマンエラーを産みかねないってことでOK?
814:デフォルトの名無しさん
18/10/08 08:33:34.55 QRotEnod.net
読めるようになれってことじゃないの?
>&&||の右側にインクリメント演算子書いたから場合によって評価されない
例えばこれは、
if(a != null && a.get()>1)
こんな行があった時に2つ目の演算でNPE起きない事が保証されると分かれ、ということだろう
書くな、じゃないよ。こんなコードたくさんあるし、こう書かないと冗長になる
815:デフォルトの名無しさん
18/10/08 08:56:01.75 fU+WK0rO.net
>>778 演算子のほうはちゃんと意味考えて書けよってことですよね?って聞いたつもりだったんです、言葉足らずでした 評価されない場合使って簡潔に書くのはよくあることなんですかね 中身1文ブロックのカッコ省略のメリットがさっぱりわからないんですが見た目がすっきりするだけですかね……? どこ読んでもあえて推奨されてることがなくて、ブログのコメント欄とかはだいたいケンカになってるんでこれはあまり触れてはいけないアレなんでしょうか
817:デフォルトの名無しさん
18/10/08 08:58:46.13 QRotEnod.net
まあそれは簡単に言うと
開発時のソースコードはデバッグ出力の行があったりするんだけど
リリース時はデバッグ出力の行を文字列置換で一掃したりする。で、もし
if(...)
debugLog(...);
こういう行があったとして、debugLog(...);を置換で削除したら、エラーになる。
if(...){
debugLog(...);
}
これは置換しても大丈夫。
だから、括弧無しは処理部分を置換する事があるか、による
経験上置換するのはデバッグ系コードだけ
818:デフォルトの名無しさん
18/10/08 09:13:02.08 fU+WK0rO.net
書き換えるつもりがない1行のはカッコ省略で書くと読みやすい、あとあと置換するdebugLog(…)とかは消したときに空のブロックになるように{}書いとく、ってことでしょうか?
819:デフォルトの名無しさん
18/10/08 09:51:13.29 UTHfaM17.net
>>780
嘘をついてはいけない
デバッグ出力を置換で消す場合は ";" に置き換えれば良いので
{} の有無など関係ない
820:デフォルトの名無しさん
18/10/08 09:55:23.16 QRotEnod.net
>>782
それは気付いてなかったw
じゃあ括弧無しのデメリットは特に思いつかない
821:デフォルトの名無しさん
18/10/08 10:26:38.83 2rmJ0ycQ.net
>>777
落ち着け、深呼吸しろ
822:デフォルトの名無しさん
18/10/08 11:34:11.42 H/mp1NsO.net
>>777-779
&&・||の右側に、副作用があったら危険!
副作用とは、何かの状態を変えること
ぱっと見ただけでは、副作用が実行されるかされないのかが、わかりにくい。
右側に、副作用が無ければよいけど
if-else 文なんかより可読性が低いから、誤解しやすい
すべての言語で、言われている。
MISRA-C とか、C言語のルールでも、決められている
823:デフォルトの名無しさん
18/10/08 12:02:59.41 QRotEnod.net
副作用があるかもしれないから、という理由なら条件分岐関係無くない?
if(a == null)
return;
if(a.get()<=1)
return;
これでget()呼ぶのも副作用あるかもしれないよね?
824:デフォルトの名無しさん
18/10/08 12:20:29.15 tKqgyITq.net
>>786
別スレッドによって a が null にされてしまう可能性はあるな。だいたいの場合はそういうスレッドがないか、
またはあると分かっているならロックしてからアクセスするように作るから問題にならないんだろうけど。
825:デフォルトの名無しさん
18/10/08 12:26:37.42 QRotEnod.net
ん?こういう理解だけど。参照が渡されてるだけだから
別スレッドが参照を破棄しても関係ないぞ
func1(Object a){
if(a == null)
return;
a.get();//絶対にNPEが起きないマルチスレッド無関係
}
func2(Object a){
a = null;
}
826:デフォルトの名無しさん
18/10/08 12:29:19.11 r0dViXxq.net
そもそも式の中で副作用のある関数を呼び出すのは危険
&&や||は評価順序が決まってるからまだマシな方でそれ以外の演算子だと評価順序もどうなるかわからんし
827:デフォルトの名無しさん
18/10/08 12:32:49.91 QRotEnod.net
でも副作用がある関数はset,write,update,createとか大体それっぽい名前ついてるし
分かるでしょ?
というか情報処理はCRUDだからcreate,update,delete的な名前が必ずついてる
副作用を広くとらえればログ出力も副作用だけど、そういうのは問題無い
getは副作用無しか問題無い副作用のみ、CRUDのRに相当するものだから
だからコーディング規約を作るなら、CRUDを意識させるようなものであるべき�
828:ナ、 真理式でメソッドを呼び出すなとかいうわけわからん規約を作るべきではない CRUDのうちRのみ呼び出していい、とすべき
829:デフォルトの名無しさん
18/10/08 12:37:02.60 QRotEnod.net
ぶっちゃけCUDでも呼び出していい
結局、意味を捉えて間違えないように書けということでしかない
コーディング規約をどういじくってもそこから逃げれるわけじゃない
830:デフォルトの名無しさん
18/10/08 12:43:00.19 wqzMNkqt.net
if (a == 0 || b++ < 1) {
}
こういう書き方をすると一見bが常にインクリメントされるように誤解されやすいからやめとけよって言ってるだけでしょ。
831:デフォルトの名無しさん
18/10/08 12:48:22.90 QRotEnod.net
真理式に複数の演算があって、かつ一部に副作用があるとまずい、ってことか
832:デフォルトの名無しさん
18/10/08 13:19:09.60 H/mp1NsO.net
副作用・副作用完了点
評価順序・マクロ
MISRA-C でも、こういう間違いやすい所の、ルールは厳しい
833:デフォルトの名無しさん
18/10/08 14:53:07.06 tKqgyITq.net
>>788
それならないな。
残るは get() して 1 以下なのを検査した直後に別スレッドによって a の状態が変化して get() が返す値が変わるとかかな。
(そんなの想定の範囲内なら問題ないが)。
834:デフォルトの名無しさん
18/10/10 01:35:05.39 gneY7b7h.net
adopt openjdkのjdk11リリースされたじゃん。
URLリンク(adoptopenjdk.net)
LTSだぞ。
URLリンク(adoptopenjdk.net)
835:デフォルトの名無しさん
18/10/12 06:07:22.65 LkXNeCMg.net
Java 11のJREって無いんですか?
836:デフォルトの名無しさん
18/10/12 08:34:35.39 kCbZI2NA.net
クライアントJREは廃止された
今現在、要JREとして世に出ているアプリをエンドユーザーが実行する公式な方法は存在しない(自己責任で開発環境を入れるしかない)
今後のクライアントサイドJavaアプリの唯一の配布方法は、JDKに含まれるコマンドラインツールを使用して
プラットフォーム毎に実行環境とアプリを同梱した実行可能なパッケージを作ることである
クライアントサイドに関しては、もはやJavaはバイナリ互換ではない
OracleはクライアントサイドJavaを段階的に廃止しようとしており、新規には決して使ってはならない
837:デフォルトの名無しさん
18/10/12 09:00:21.36 U0bHLz7N.net
>>796
当てにならんよこんなの
こいつらはただのビルド屋で、自分達でソースに手を入れる体制はない
次のバージョンのOpenJDKがリリースされた後もOpenJDK公式リポジトリの旧バージョンのソースに対してLTS向けのパッチが提供されるかどうかは、
オラクル様の温情次第
838:デフォルトの名無しさん
18/10/12 20:45:34.37 LkXNeCMg.net
>>798
サンクス
839:デフォルトの名無しさん
18/10/22 16:04:20.83 1yTQ4g+U.net
何時の間にかvar使えるようになってたな
840:デフォルトの名無しさん
18/10/22 23:21:36.65 KYkLOyp1.net
いないいないvar
841:デフォルトの名無しさん
18/10/22 23:32:16.95 sd28W5TQ.net
Javaに型推論が無いことをディスられると、意識高い系Javaerさん達は
ローカル変数の型もinterfaceにするべきだからそんなもん要らんと上から目線で反論してたけど
梯子外されちゃって哀れだな
842:デフォルトの名無しさん
18/10/23 03:01:58.72 IDcT8U1C.net
これ2じゃなくて1が出力される。何で?
@Test
public void mapObjTest() {
Map<Long, Integer> m = new HashMap<>();
Long key = 1L;
m.put(key, 1);
Integer val = m.get(key);
val++;
System.out.println(m.get(key));
}
843:デフォルトの名無しさん
18/10/23 03:05:36.61 IDcT8U1C.net
悪く言われるけどクライアントサイドについてJRE同梱は良いんじゃない?
もはやファイルサイズは小さな問題だし、JREのバージョン違いでの誤作動を減らせる。
クライアントサイドJavaがそれで悪くなったと思わないけどな、俺は
JavaFXが外されたのは悪くなったと思うけど、�
844:ナもどうせ同梱する作業するときに入れるんだし 妥当な変化じゃないの?
845:デフォルトの名無しさん
18/10/23 05:51:34.87 6lDUuVuA.net
>>804
val++は↓これと同じ
val = val + 1
変数valに値を代入してる
↓こう書けば値は2になる、value.valueはドット演算子を使ってオブジェクトの状態を変えてる
public class Main {
public static void main(String[] args) {
Map<Integer, Value> map = new HashMap<>();
map.put(1, new Value(1));
Value value = map.get(1);
value.value++;
System.out.println(value.value);
}
}
class Value {
int value;
Value(int value) {
this.value = value;
}
}
変数に対する代入と
オブジェクトの状態を変えることとは
異なる操作なんやで
846:デフォルトの名無しさん
18/10/23 07:00:55.65 6lDUuVuA.net
変数への操作か、オブジェクトへの操作かを区別する必要があって
それぞれの違いはこんな感じ
URLリンク(light.dotup.org)
847:デフォルトの名無しさん
18/10/23 07:55:16.19 ukFWTvzy.net
>>804
Integerをインクリメントした瞬間に新しくIntegerインスタンスが生成されるからだな
詳しくはオートボクシング、インクリメントとかでググるといい
848:デフォルトの名無しさん
18/10/23 08:11:13.69 ukFWTvzy.net
要するにval++は↓の省略系
val = new Integer(val.intValue()+1)
849:デフォルトの名無しさん
18/10/23 09:23:24.20 cDc5Fd7g.net
>>805
悪くはなってないよね
0に何を掛けても0だからな
850:デフォルトの名無しさん
18/10/23 09:42:44.32 AS/7ikV7.net
すごーい
851:デフォルトの名無しさん
18/10/23 23:29:12.49 baThXOF4.net
>>805
動的リンクしまくってるからFullJRE前提だわ。
852:デフォルトの名無しさん
18/10/25 05:33:58.31 KXlarInO.net
Object#equals()
public boolean equals(Object obj) {
return (this == obj);
}
なんでreturn this == obj;じゃなく括弧で囲ってるの?
853:デフォルトの名無しさん
18/10/25 09:55:01.19 hw/Q19JU.net
囲ってみたい気分だったのだろう
854:デフォルトの名無しさん
18/10/25 11:06:47.39 jwOWZyFv.net
return文に記述された式が複雑なときは括弧で括ったほうがmore readableだから推奨してる人のほうが多いように思うけど、
this == objが複雑かどうかは微妙だね。
でも自分なら括弧つけるかな。
理由は、括弧でくくることで、等式が値を返す数式として使われていることを明示できるから。
855:デフォルトの名無しさん
18/10/25 11:34:47.74 r31i+JfI.net
Javaの最黎期に書かれたものだろうから、コードスタイルが今の基準からすれば変でもおかしくない
今では一般的には括弧はつけないのが主流だね
856:デフォルトの名無しさん
18/10/25 12:09:47.24 VLidr5ui.net
最近はアローで書いちゃうから一行だしな
857:デフォルトの名無しさん
18/10/25 14:00:36.81 oNBD1gf9.net
計算がよくわからん時は、まず括弧で囲えって、
今でも教える人がいるからな
858:デフォルトの名無しさん
18/10/25 14:21:09.91 6wYT/HJT.net
かっこいい、かっこわるい?
859:デフォルトの名無しさん
18/10/25 18:46:51.45 zmVgc+jl.net
>>818
演算子の優先順位の話なら不要だと思ってもあえてつけたままにすることはあるな
+ と * とかならいいけどビット演算子とか言語によって違う奴とかもあるしね
860:デフォルトの名無しさん
18/10/27 15:01:56.02 1x6RXWmG.net
javaでaccessdbと接続するようなソフト作ってみたいんですが
フレームワークって必要ですか
ちょっとフレームワーク自体よくわかってないです。
規模は社内で5
861:人くらいで使用します。
862:デフォルトの名無しさん
18/10/27 19:11:03.52 RbshV9yz.net
検索すれば出てくるけど
ハマることが多そうだからオススメしない
Javaが要件なのかAccessが要件なのかわからんが
863:デフォルトの名無しさん
18/10/27 19:15:14.94 LS+3DLFQ.net
>>815
Webで避けて通れないJavaScriptのせいとかもあるな。
JavaScriptのセミコロン省略可能はいまだに嵌る。
864:デフォルトの名無しさん
18/10/27 19:16:29.43 ZlRq8doU.net
Ruby on Rails, Node.js などでは、開発環境では、SQLite を使うけど
865:デフォルトの名無しさん
18/10/27 22:29:57.54 229rJcCX.net
>>805
Write once,Run anywhere
配布しようと思ったら環境に応じたJRE添付してやらないといけないんだよね?
根本理念に喧嘩売ってる気がする
866:デフォルトの名無しさん
18/10/28 03:09:10.51 7tRDHbkL.net
>>825
バイナリ互換じゃなくなるけどソースコード互換ではあるので・・・
JavaでGUIアプリ作ってネットで配布する場合、エンドユーザーの環境に依存するの辛いでしょ
むしろJRE同梱したい、と思うのが普通だよ
JRE同梱によるファイルサイズ増加はもはや問題にならないし
どうせJRE同梱作業するなら、その時にJavaFX入れれば良いので、分離されたのも妥当な気がするし
むしろクライアントサイドで進歩してると言っても良いのでは
867:デフォルトの名無しさん
18/10/28 03:59:58.74 WcIuuSyz.net
>JavaでGUIアプリ作ってネットで配布する場合、エンドユーザーの環境に依存するの辛いでしょ
JRE同梱だと回避できて、JARだけだとダメな問題ってどういうのがあるん?
実際にクライアントの環境が異なってたらどうやって提供しようが辛さは一緒におもえる
だいたいJRE同梱なんかされたら何仕込まれてもわからん
サンドボックスのしっかりした仕組みがあるわけじゃなし
そもそもWindowsとかOS側が信用できない
共通のJavaだから信頼感あったのに
868:デフォルトの名無しさん
18/10/28 04:08:51.40 z9u8vCUJ.net
今どき.NETですらランタイム同梱する流れだからな
869:デフォルトの名無しさん
18/10/28 04:22:29.53 WcIuuSyz.net
MSはユーザーの個人情報盗みたい側だし
870:デフォルトの名無しさん
18/10/28 04:26:41.29 7tRDHbkL.net
>>827
何言ってるか良く分からんが、JRE同梱すればJREのバージョン違いによる問題が無くなるだろう。
いちいちJREをインストールしてもらう手間も無くなる。
例えば一部のJREはJavaFXを同梱しているが、一部はそうではない。
何仕込まれても、ってのは良く分からんが
スタンドアロンアプリでもセキュリティマネージャーは動くはず
871:デフォルトの名無しさん
18/10/28 04:32:23.62 7tRDHbkL.net
確かにこれまでと比べると、オラクルのサイトからJRE落としてそれで動かしてたのに比べると
アプリ毎にJRE同梱されちゃうとおかしなネイティブ実行ファイルが同梱されてないか、という問題はある
しかし同梱されたプラットフォーム固有の実行ファイルはハッシュ値とかで適切なファイルかを照合できるはず
あとそもそもバイトコード部分でも相当な処理が可能だから、さほどセキュリティリスクが変わると思わない
ネットからプログラムを落とすなら、オープンソースか信頼できる大御所か
これまでと変わらないのでは
872:デフォルトの名無しさん
18/10/28 04:34:29.37 z9u8vCUJ.net
>>829
ランタイム同梱の意味わかってる?
873:デフォルトの名無しさん
18/10/28 04:36:35.55 WcIuuSyz.net
問題はJREのバージョンか
たしかに多少の問題はあるが
JRE同梱必須にしたらJavaの目指していた未来と可能性そのものを切り捨てることになる
そうできるってのとそうしなきゃいけないってのはえらい違い
874:デフォルトの名無しさん
18/10/28 04:42:15.05 7tRDHbkL.net
JREを同梱しないと、10年経ったら動かなくなってると思う
クライアントサイドはJRE同梱で作れと強制する事は、そんな悪い事じゃないと思う
そうしないとJavaがバージョンアップしづらい問題もあるから、オラクルはそうしたいんだろう
875:デフォルトの名無しさん
18/10/28 04:46:39.09 vBzuIBdi.net
元々Write once,Test anywhere
って失望されてたじゃ無いか。
876:。。 HTML5も同じだけど、理想と現実は遥かに遠い隔たりがある。
877:デフォルトの名無しさん
18/10/28 04:48:23.37 GS4HIDpq.net
スタティックリンクの肥大した実行ファイルと一緒だよね
Write Onceで全プラットフォームで動いたら開発者としては理想じゃないかな
878:デフォルトの名無しさん
18/10/28 04:49:04.83 7tRDHbkL.net
オラクルはJavaを高速バージョンアップしたいみたいな事も言ってるが、
一連の話は整合性がある
サーバーサイドはエンジニアが管理しててJRE固定できる、
クライアントサイドはJRE同梱。
現状だとJavaから古いAPIを削除したら多くのアプリが動かなくなるから、
移行期間を作ってそのようなアプリが減るのを待つ。
そうしないとJavaに未来が無いという判断は、理解できなくない。
879:デフォルトの名無しさん
18/10/28 05:01:48.54 WcIuuSyz.net
じぶんとこのOracleDBは枯れまくってても平気なくせに
880:デフォルトの名無しさん
18/10/28 05:47:19.26 D9Gt7gmT.net
改変されたJREを同梱されたら終わりではないか?
881:デフォルトの名無しさん
18/10/28 05:51:56.29 7tRDHbkL.net
だから、同梱されたファイルのハッシュ値調べればわかるし、
アンチウイルスだって有名な実行ファイルについてハッシュ値を知識として持っておくべき。
オープンソースは誰かが検証すべき。
で、もともとバイトコード部分でも相当な事ができるからセキュリティリスクは変化してない。
882:デフォルトの名無しさん
18/10/28 14:47:49.66 Ii5bdv+P.net
クラス変数にもvar使わせてほしいよな
無名クラスにリフレクションで値を代入するフレームワークとかでてきそうだし
class Hoge {
public var xyz = new Object() { int x, y, x };
}
883:デフォルトの名無しさん
18/10/28 23:50:32.90 vn58j50+.net
それをやると型を特定するために延々先を辿らなきゃいけなくなるんだ…
884:デフォルトの名無しさん
18/10/28 23:52:24.19 qcVVu7B5.net
Class#forNameで動的リンクするときjlinkとかは依存するクラス検出できないから
結局手動で全部依存関係調べるかfull jre使うかの二択になる。
>>841
互換性が保証できなくなるからやらないだろ。
実行時の型と推論された型は違うから。
885:デフォルトの名無しさん
18/10/29 00:01:40.82 k1+zlMbU.net
というかあれだぞ。
javapackagerなくなったからjava11ではjre同梱したパッケージ作れないし、
なくなったのはpublic jreだけでjreのビルド自体はadopt openjdkがやってるからjre自体はあるぞ。
886:デフォルトの名無しさん
18/10/29 00:06:53.79 RWf1bRTo.net
>>841
コンパイラの仕組み上困難
Javaコンパイラはまず、メンバのシグネチャだけを解析してクラスごとにメンバのお品書きを作る
そして、それが一通り終わった後に各メソッド本体やフィールド代入元の式を解析する
ところがフィールドの型にvarを許してしまうと、お品書きを作る段階でフィールド代入元の式を解析しなきゃいけなくなる
それによりコンパイラのパスが増えてしまうから、コンパイル速度が大きく低下する
887:デフォルトの名無しさん
18/10/29 01:24:28.42 Cn2rCt1V.net
>>845
クラスにvar持てるHaxeのコンパイル遅いと感じたこと無いけど
Scalaとかいう言語でものすごく遅くなったという話は聞く
888:デフォルトの名無しさん
18/10/29 02:54:18.59 doCXynSY.net
>>844
Java 11でクライアントサイドはどういう扱いになってるの?
889:デフォルトの名無しさん
18/10/29 03:02:24.77 doCXynSY.net
新しいパッケージングツールの要件はJavaFX未対応とされている
URLリンク(openjdk.java.net)
JavaFX由来のパッケージングツールが削除された
じゃあ、JavaFXアプリをエンドユーザーに配布したい場合、どうするの?
現在見つかる情報は、非JavaFXの自己完結型パッケージャ、
JavaFXのビルド方法だけで、JavaFXの自己完結型パッケージャが行方不明なんだけど
890:デフォルトの名無しさん
18/10/29 04:02:15.84 doCXynSY.net
URLリンク(commons.apache.org)
これはthread safeですか?
891:デフォルトの名無しさん
18/10/29 22:22:22.37 Cn2rCt1V.net
アウト、セーフ、よよいのよい
892:デフォルトの名無しさん
18/10/29 23:23:48.16 KWB0XUD6.net
>>847
Java Client Roadmap Update
URLリンク(www.oracle.com)
>>848
jep343がjavafx対応しないんだからないよ。
でも、javafxはただのライブラリなんだからjep343でほかと同じ扱いでしょ。
893:デフォルトの名無しさん
18/10/30 14:22:42.63 ySliw7Bj.net
public synchronized void method1(){}
こういうメソッドレベルでsynchronizedした場合、
synchronized(this){}ということですか?
つまり他のところでsynchronized(this)が書かれていたら、どちらかが待機になるんでしょうか
894:デフォルトの名無しさん
18/10/30 15:22:20.46 E+8/TrgC.net
>>852
その通り
thisをロックするのはパフォーマンスの低下やデッドロックの原因になるため、現代では一般には悪手とされている
synchronizedがデフォルトでthisをロックするのはJavaがまだオモチャでカジュアルに排他制御してた時代の名残で、
ちゃんと作るなら排他制御には private メンバを使って外に漏らさないようにした方が安全
895:デフォルトの名無しさん
18/10/31 12:34:18.73 6PFXXFSS.net
thisをロックするのとロック専用オブジェクトをロックするのは
性能の違いがあるんですか?
896:デフォルトの名無しさん
18/10/31 14:41:22.75 3SYFbLW8.net
>>854
thisはクラス外からも当然見えているわけで、他のクラスも同じオブジェクトを同時にロックしている可能性がある
どえせ内部的に同期してるんなら他のクラスが同時にアクセスしてくることは何の問題もないはずで、これは完全に無駄なブロックだ
クラス外から見えるオブジェクトをロックするのはパフォーマンスだけではなくてデッドロックの可能性を高める非常に悪い行為
897:デフォルトの名無しさん
18/10/31 15:22:21.60 6PFXXFSS.net
デッドロックの可能性は分かるんですが、
その性能の劣化というのは、クラス外でたまたまロックに使われていた場合、
待機時間が生じるから、ということですか?
待機時間以外に構造的に複雑なオブジェクトをロックすることでの性能劣化はありえますか?
898:デフォルトの名無しさん
18/10/31 15:45:06.31 3SYFbLW8.net
>>856
それはない
ロックはオブジェクトヘッダにロック中であることを示す情報を書き込むだけ
899:デフォルトの名無しさん
18/10/31 15:58:04.06 lmDzWSZe.net
意味不明なエラーで苦しめw
900:デフォルトの名無しさん
18/10/31 16:17:19.41 SePuugIe.net
ロック可能なのは全部ロックしたら苦しんだ黒歴史・・・
901:デフォルトの名無しさん
18/10/31 17:20:43.08 6PFXXFSS.net
専用オブジェクトでロックしても結局プログラマーが入念にチェックする以外
無い気がするんですが合ってますか?
よく言われてるようなロック順序云々では解決しない気がするんですが
902:デフォルトの名無しさん
18/10/31 17:23:06.92 xpjrbgPR.net
Javaはいつかなくなるんですか
903:デフォルトの名無しさん
18/10/31 19:25:31.36 ZwMW2kAu.net
いつか
904:デフォルトの名無しさん
18/10/31 19:27:08.55 iY3LkiS1.net
きっとどこかで生き残る
905:デフォルトの名無しさん
18/10/31 19:30:32.81 umCB7ism.net
俺のディスクの上で生き残る
906:デフォルトの名無しさん
18/10/31 19:48:34.38 umCB7ism.net
デッドロックと言えば、サーバをまたいだロックを掛けててデッドロックになった時は原因究明が大変だったなあ。
907:デフォルトの名無しさん
18/10/31 20:18:06.23 YzLC1QbG.net
>>860
外に漏らさなければ入念にチェックする範囲がクラス内だけに留まるだろ
外から見えるオブジェクトならそれを触ってる可能性のある範囲全てをチェックしなきゃいけない
908:デフォルトの名無しさん
18/10/31 21:04:23.41 6PFXXFSS.net
>>866
クラスA#method1() method3呼び出し
クラスA#method2()
クラスB#method3() method2呼び出し
この状況でmethod1,3を異なるスレッドが呼び出したらデッドロックになりうるのでは?
クラスA,Bがそれぞれ
909:専用のロックオブジェクトを持っていて method1,2,3の内部でロックオブジェクトでロックしているとして
910:デフォルトの名無しさん
18/10/31 21:13:55.51 umCB7ism.net
そういやJavaVMって実行時にデッドロックを見つけ出す機能はないのかな?
OSのファイルロックだと見つけてくれたりするよな。NFS絡むと無理だけど。
(あ、でも2プロセスでロック掛け合った場合だけかな?)
911:デフォルトの名無しさん
18/10/31 21:30:17.03 6PFXXFSS.net
デッドロックを通知する仕組みはあるようです。JConsole
安全なsynchronizedというものは、そのメソッドがどこから呼び出されているか、
どれを呼び出しているかというような依存関係で決まって、
単純な記述方法で安全性を確保する事はできないのではと思いました。
どのオブジェクトをロックしてもこの問題は残ります。
URLリンク(www.jpcert.or.jp)
これなんかもそうですが、ロック順序だけで解決できると考えてしまっていますが、
synchronizedブロック内のロジックが他のメソッドを呼び出している場合、
まだデッドロックが発生する可能性があると思います。
派生していくメソッド呼び出しのどこかにsynchronizedブロックがあれば。
もちろん、多くの場合、プログラムは様々なメソッドを呼び出します。
>>860はこの理解で正しいかという意味です
912:デフォルトの名無しさん
18/10/31 21:40:58.89 KdCoWYCo.net
頑張れぼうやw
913:デフォルトの名無しさん
18/10/31 22:59:47.53 GrkkoIKB.net
>>867のケースで仮にAがthisをロックしていたとしたら、B#method3がA#method2を呼ばずともB#method3内で直接または間接的にAのロックを試みただけでデッドロックするだろう。
privateなロックオブジェクトを用いたからといってデッドロックの可能性はゼロにはならないが、thisを使うのに比べれば確実に可能性は低くなる。
あえてリスクの大きくパフォーマンスの低下する方を選択する積極的な理由がない。
914:デフォルトの名無しさん
18/10/31 23:05:48.35 VI6I+9K/.net
>>869
何を言いたいのか理解できないが、どこの誰がどんなタイミングでロックを取りに来ようとも、ロックの順番さえ守ってれば絶対にデッドロックは起こらないよ。
915:デフォルトの名無しさん
18/10/31 23:43:17.95 QZT9zuHU.net
DB などほとんどのアプリでは、デッドロックでタイムアウトする。
絶対に回避できない
ロックする順番は、2プロセスの場合、
プロセスAがX, Y、
プロセスBがY, X
3プロセスの場合、
プロセスAがX, Y、
プロセスBがY, Z、
プロセスCがZ, X
916:デフォルトの名無しさん
18/11/01 00:20:30.29 IO/IeQZr.net
>>873
ロックの順番があべこべなのだからデッドロックするのは当然だろう
917:デフォルトの名無しさん
18/11/01 06:39:30.81 MRwfHAbj.net
>>873
バカにロックを使わせるな
って言う見本
せめて初歩の初歩ぐらい理解してからレスしろよ w
918:デフォルトの名無しさん
18/11/01 07:11:11.17 m171VN/W.net
>>872
ロックの順番を守る事ができないということです
ブロック内にメソッド呼び出しがあることは普通です
919:デフォルトの名無しさん
18/11/01 07:11:48.43 m171VN/W.net
>>871
>どのオブジェクトをロックしてもこの問題は残ります。
920:デフォルトの名無しさん
18/11/01 07:13:39.94 m171VN/W.net
現在している話は、普通のプログラムにおいてロックの順番を守る妥当な方法は存在しないという話です。
synchronizedブロック内でメソッド呼び出しがあった時点でそうなります。
それに対してロックの順番を守ればいいとかthisをロックしろとか言い続けているのは話が分かっていません。
921:デフォルトの名無しさん
18/11/01 07:17:18.61 m171VN/W.net
もう少し分かり易い説明を思いつきました。
ここにある問題は、synchronizedブロックで一旦ロック順序を守ったとしても、
そのブロック内から呼び出されているメソッド及びそこから派生的に呼び出されている全てのメソッドにおいて
synchronziedブロックを使う場合デッドロックが生じうるという問題で、
リファクタリング等において恒久的に懸念が残り続けるという問題です。
これは一時ロック順序を守ったコードを書いても解決しません。
922:デフォルトの名無しさん
18/11/01 07:20:14.51 m171VN/W.net
すみません、経験上凡人レベルの人に話しても理解されなくて、辛い思いをするだけです。
話を終わります。
923:デフォルトの名無しさん
18/11/01 07:36:25.75 PBz6MbC
924:m.net
925:デフォルトの名無しさん
18/11/01 07:55:33.73 MRwfHAbj.net
ID:QZT9zuHU = ID:m171VN/W
バカのまま永遠にデッドロックしとけ
926:デフォルトの名無しさん
18/11/01 08:23:01.98 Tn1c1okn.net
例題とかじゃなくて、どういう時にロックが必要になるか考えて実際にやってみたらいいんじゃないか
そんな複雑なsynchronizedの使い方をしたことはしないだろう
927:デフォルトの名無しさん
18/11/01 09:20:12.40 AYHv18S/.net
>すみません、経験上凡人レベルの人に話しても理解されなくて、辛い思いをするだけです。
世間は俺のことを分かってくれない(馬鹿のFAQ)w
928:デフォルトの名無しさん
18/11/01 09:30:29.97 KWvf1ga0.net
ID:m171VN/Wは天才すぎる故に凡人レベルの嫉妬を買ってしまった
929:デフォルトの名無しさん
18/11/01 09:40:00.51 mQsUQM4b.net
いや本当。凡人レベルの人には話が通じませんよね。
という具合にみんなして同調しておけばいいのに。
930:デフォルトの名無しさん
18/11/01 09:41:09.33 VmLiOLMi.net
凡人にも理解出来る様に説明出来る能力を持ってるのが、天才の条件だな
説明出来ない人は紙一重の方
931:デフォルトの名無しさん
18/11/01 09:47:33.79 DtT8Cv0d.net
まあ責任と前提の問題だな
正常な頭してたらクラスAとクラスBが相互に密結合するような設計をすることはありえないから、
似た状況が起こりうるのはBがAに自身を登録してAがBをinterface経由で「コールバック」するようなパターンだろう
その場合、BのメソッドがAのコンテキストから呼び出されることはBを作る側は当然知っているはずで、Aを更に別のスレッドから呼ぶような基地外的行為をしないという人間としての最低限度の責任はB側にある
そしてA側はそのようなリスクのある拡張ポイントをなるべく作るべきではないし、やむを得ないときはドキュメントに明記するべき
932:デフォルトの名無しさん
18/11/01 10:30:23.17 Tn1c1okn.net
あれだ
スレッドを知った初心者が無駄に使いたくなってる状態に近いんじゃないか
933:デフォルトの名無しさん
18/11/01 10:34:13.85 x+OioMtW.net
天才はこちらへ
上級プログラマの雑談部屋☆2
スレリンク(prog板)
934:デフォルトの名無しさん
18/11/01 11:38:29.67 mQsUQM4b.net
>>890
ありがとう。そんなスレがあったとは。正に俺のために作られたようなスレだな。
と、サラッと書けるくらいにならんといかんよ。現実がどうであれ。w
935:デフォルトの名無しさん
18/11/01 14:20:26.28 aGO292A7.net
馬鹿は死ななきゃ治らない
936:デフォルトの名無しさん
18/11/01 15:10:14.12 Nl3jEz8g.net
javaの資格のsilverやgoldはどの程度の実力で受かりますか?
デザインパターンやリファクタリングをちゃんと理解しているレベルなら余裕で受かる?
937:デフォルトの名無しさん
18/11/01 15:35:43.13 mUSj63Sn.net
>>893
シルバーはブロンズと変わらん
ゴールドはライブラリの使い方知ってればおけ
日付の計算とかスレッドとかコレクション
938:デフォルトの名無しさん
18/11/01 15:58:36.20 Nl3jEz8g.net
>>894
ゴールドもその程度で受かるのですか?
楽勝ですね。
じゃ逆にデザインパターンやリファクタリングをあまり理解していなくても受かるということ?
939:デフォルトの名無しさん
18/11/01 16:03:52.20 OxvwXsOa.net
受けようと思ったことすらないのでわからない。