X



★★Java質問・相談スレッド181★★
レス数が1000を超えています。これ以上書き込みはできません。
0323デフォルトの名無しさん
2018/06/23(土) 20:24:44.15ID:lx4N25iu
Javaの入力値チェックの方法についてご相談です。

ユーザーから手入力された値をインスタンス変数に代入後、チェックする処理を記述しようと思っているのですが、方法として以下の3つを考えています。
※setter のアクセスレベルはprivateにしています。

@ 検査対象のインスタンス内でチェック用のメソッドとsetter をそれぞれ定義する

A 検査対象のsetter 内に、チェック処理のロジックを記述する(チェック処理の内包)

B チェック処理をする責務を持つクラス(インスタンス)を別で作成し、検査対象を引数として与える

3つの方法に対してのご意見、ご指摘を頂きたいです。
そもそも、setter に値をセットする以外の処理を含めて良いものか悩んでおります。
可能であれば、setter の件についてもご意見頂ければと思います。

長文となってしまいましたが、皆様よろしくお願いします。
0324デフォルトの名無しさん
2018/06/23(土) 22:44:16.49ID:5c71PR8X
java bronzeを受けようと思い黒本過去問10周くらいして
理解できたと思いますが、似た問題が多いでしょうか・・
合格した方はどれくらい勉強したか教えてください。
0325 ◆BrBq2CJg6HGd
2018/06/23(土) 22:52:16.17ID:H68Z4zsJ
>>324
それなら多分大丈夫だと思います
俺は翔泳社の問題集を3回ぐらい解いて受かりました
0326デフォルトの名無しさん
2018/06/24(日) 11:46:06.34ID:MQB4VaSY
>>323
ユーザの入力値受け取るクラスならprivateじゃなくてpublicなsetter作るような気がするんだけど
ちょっと状況が分からない
どういうクラスかもう少し書ける?

setterに処理を含めること自体は問題ない
0327デフォルトの名無しさん
2018/06/24(日) 12:47:58.04ID:I6qT+7Vz
>>323
時と場合により全部使う
プレゼンテーション層での検証は主に@とB
ドメイン層での検証は主にA(setterは基本的に非公開だが)
0328デフォルトの名無しさん
2018/06/24(日) 14:33:44.94ID:pKame5cc
setterにロジック含めていいかどうかで悩むとかアホか
ロジック含める可能性がないならsetter通さずにフィールドにそのまま大入すればいいだろアホ
0330デフォルトの名無しさん
2018/06/24(日) 18:01:03.69ID:5i39kBRv
IPっつったら、IDEAPOCKETが真っ先に思い付くわ・・
0331デフォルトの名無しさん
2018/06/25(月) 09:12:54.69ID://DXoKuS
大入袋
0332デフォルトの名無しさん
2018/06/25(月) 20:05:59.87ID:6QnNrYn1
すみません、いくつか質問させてください。

<クラスパス(ビルドパス)について>
・eclipseの「ビルドパスに追加」したフォルダが複数登録されており、
・それらの中に全く同じパッケージに有る同じクラス名が合った場合、
 どのような優先順位で1つのクラスが選ばれるのでしょうか。
・また全く同じパッケージ・クラス名で、 .jarのライブラリがインポート
 されていて、それとは別にフォルダ構造のパッケージの中に、
 バラの.classファイルが配置されていた場合、これらの優先順位
 はあるのでしょうか。
・コンソールでjavaを実行するのではなくTomcatがjavaを
 実行する場合、どのディレクトリからjavaを実行しているのでしょうか?
・.jspファイルは「ビルドパスに追加」をフォルダに置く必要が
 あるのでしょうか。それとも「ソースフォルダの追加」に登録
 フォルダの配下にあるべきなのでしょうか。
・gitなどでバージョン管理をする際に、.classファイルや .jarなどの
 バイナリファイルを複数人で別々のバイナリを生成して
  コンフリクトした場合、マージされるのでしょうか。
DBに保存されたバイナリデータもマージされるのでしょうか。
・eclipseで設定したブレークポイントでソースが停止した場合、
 その実際の.classファイルあるいは.jarファイルはどこにあるのか
 特定できるでしょうか。
 
0334初心者
2018/06/25(月) 20:16:03.04ID:6QnNrYn1
<eclipseの「ソースフォルダの追加」について>
・「ソースフォルダに追加」したフォルダの配下にある.javaコードは
  eclipseのブレークポイントで止まってくれますが、
  これは「ソースフォルダに追加したソースから生成された.class
あるいは.jar」が実行されていなければソースは特定できないので
  しょうか。
・「ソースフォルダに追加」した時点でそのソース群から生成された
  .classファイルがもしビルドパスに登録されているフォルダ配下
  に生成されるようになっていなければ、自動的にビルドパスに
  追加されるのでしょうか?
・それとも単純に同名のパッケージ名、クラス名が実行された場合、
 ソースフォルダに登録したフォルダから検索して、名前の一致だけで
 特定しているのでしょうか。
・もし名前の一致だけで特定している場合、同じ名前の別のソースから
  生成された.classファイルに中身が書き換わってしまい、
  ソースフォルダに追加している.javaと.classの中身が全く
  対応しなくなっている状態になると、デバッグは失敗するのでしょうか。
・「ソースフォルダに追加」で複数のフォルダを追加して、
 別々の場所に同じパッケージ名、クラス名の.javaファイルが複数あった
 場合、デバッグ時に呼び出されるのはどの.javaファイルになるのでしょうか。
0336デフォルトの名無しさん
2018/06/25(月) 21:38:05.82ID:mHx9ED9l
>>332
ビルドパスの優先順はビルドパスのダイアログにOrder and Exportというタブで指定したとおりだよ
クラスパスは先に指定したものから順番に検索される、先に見つかったものが使われる
0337デフォルトの名無しさん
2018/06/25(月) 22:00:32.20ID:XS6tlG59
githubでC#で書かれたソースコードを見るとVisual Studioで作成したファイルが見当たらないんですが、
Visual Studioを使わないほうがいいんでしょうか?
0338デフォルトの名無しさん
2018/06/25(月) 22:00:51.60ID:XS6tlG59
すれ間違えました
0339デフォルトの名無しさん
2018/06/25(月) 23:33:17.67ID:lTrbOz9W
>全く同じパッケージに、同じクラス名がある
パッケージはフォルダ、クラスはファイル名に相当するから、
同一フォルダ内に、同一のファイル名は、絶対に存在できない

>コンソールでjavaを実行するのではなくTomcatがjavaを実行する場合、
>どのディレクトリからjavaを実行しているのでしょうか?
pwd のような、Linux コマンドを実行すれば、カレントディレクトリを表示するはず。
それか、そういう環境変数を探す

これら以外の質問は、実際に起こった場合の、エラーメッセージで検索して
0340デフォルトの名無しさん
2018/06/26(火) 09:24:15.65ID:4BKP4Htb
そういや試したことないが、2つの別々のjarファイルの中のディレクトリとクラスファイルが同じだったらクラスローダーがエラー出すんだろうか?

あ、コピーしてやってみればいいだけだな。時間があったらやってみよう。
0341デフォルトの名無しさん
2018/06/26(火) 10:03:27.13ID:HJBlnKJN
>>339
それはクラスパスが1つだけと仮定したときの話でしょ?
複数のクラスパスに中身が違う同じパッケージ空間のクラスが存在できるじゃん。

eclipseの「Javaリソース」「参照ライブラリー」「ライブラリー」
「JREシステム・ライブラリー」「Web Appライブラリー」
って何が違うのか気になるわ。
あとそれぞれのアイコン
・田んぼの「田」みたいなアイコン(茶色/白)
→パッケージだけど色の違いは・・・?
  茶色い田はフォルダで中に.classファイルが入っている。
  白い田はファイル?なのかよくわからない。
  フォルダ名の名前空間を表している?
・フォルダ内に「田」が入っているアイコン
・本が積み上げられているようなアイコン
→これは「ライブラリー」か
  フォルダの中に「本」が入っているようなアイコンもあるがこれは何?
・ビンのアイコン
 →これは.jarだけど.jarってライブラリーのことじゃないのか?
  .jarと本のアイコンの違いは何だ?
・「.classファイル」のアイコンも2種類ある。
 →1つは「J 01」というファイルのような形のアイコン
  もう一つはツリーのような形をした黄色、ピンク、青のアイコン。
  これらの違いは何?

イメージとして.classファイルを集約するフォルダがパッケージ(田)
で、パッケージを集約するのが「.jar」で、
.jarを集約するのが「本のアイコン」でいいの?
本のアイコンとフォルダ内に田があるアイコンの違いもよくわからない。

ファイルシステム上ではどれも単なる「フォルダ」似すぎないものの
分類が多すぎて混乱するわ。
0343デフォルトの名無しさん
2018/06/26(火) 11:37:57.95ID:B6D+LuS4
>>341
eclipseの「Javaリソース」「参照ライブラリー」「ライブラリー」
「JREシステム・ライブラリー」「Web Appライブラリー」
って何が違うのか気になるわ。
→どういった機能があるライブラリーなのか分類分けしてるだけ。WebかいはつしないならWeb Appライブラリーをビルドパスから除外するなど

あとそれぞれのアイコン
→ただ単に状態を表してるだけ。田の白茶は直下にクラスファイルが有るか無いかだけだったと思う、ほかはないを言ってるかよくわからない

ファイルシステム上ではどれも単なる「フォルダ」似すぎないものの
分類が多すぎて混乱するわ。
→慣れろ
0345デフォルトの名無しさん
2018/06/26(火) 13:09:23.95ID:4BKP4Htb
>>340を試してみたらエラーにならなかった。
で、クラス名同じで内容が違う状態で実行して判別できるようにして調べたら -cp で先に指定した方が有効になるだけだった。
単純に頭からクラスの検索しているだけみたい。
0346デフォルトの名無しさん
2018/06/26(火) 13:10:10.27ID:4BKP4Htb
>>344
いやあ、しかし、エラーになってほしいものではあるよな。
0350デフォルトの名無しさん
2018/06/26(火) 17:25:51.93ID:QQQU3toQ
てかマジにパッケージの役割をまるで理解できてない自分が怖い。
他のプロジェクトのクラス利用するみたいな時に役立つんですかね。
0351デフォルトの名無しさん
2018/06/26(火) 17:59:26.14ID:svNbpPIp
PCではクラスが重複していてもエラーにならずどっちがロードされるか分からんけど
Googleさんはそんな曖昧なことを許さず
Androidアプリをビルドするときはクラスが重複してるとエラーになる
0352デフォルトの名無しさん
2018/06/26(火) 19:49:21.17ID:EJ9QuCpH
さすが
0354デフォルトの名無しさん
2018/06/28(木) 21:25:44.96ID:RNZwZaAN
java有料化と聞いたのですが個人使用やAndoroidなら無料ですよね
0356デフォルトの名無しさん
2018/06/28(木) 22:34:14.17ID:mQsBu3Yx
>>354
OracleJDKは個人使用だろうと有料
OpenJDKは無料だけどサポート期間が半年で切れ、その都度最新版に乗り換えないといけない
AndroidのJavaは元々違法だから関係ない
0357デフォルトの名無しさん
2018/06/28(木) 22:54:20.28ID:HobEbqhl
先週OracleがJDK11の扱いを新たに発表したよ
これまではOracleJDKを有償サポート契約者にしか提供しないと言っていたのだが
デモや評価目的でOracleJDKを使うことができると表明した
これにより誰でもOracleJDKをダウンロードできるのではないかと見られている
(ただし未契約ではサポートは受けられない)

またOpenJDKについてもOracleがビルドした(ほぼ公式)バイナリが提供される
OpenJDKについては他にもzuluなどいくつかのディストリビューターがビルドバイナリを提供している

JDK11以降も商用サポートが受けられないというだけでJavaはこれからも自由だよ!
0362デフォルトの名無しさん
2018/06/29(金) 12:28:18.43ID:04kXi5pA
払えばサポート受けられるだけで払わなくても商用利用出来る

という認識でok?
0363デフォルトの名無しさん
2018/06/29(金) 13:38:34.81ID:cRGLx+38
>>362
サポートって電話したらオラクルのお姉さんと話せるサービスを想像してる?
セキュリティパッチの提供も含まれるんだぞ
0365デフォルトの名無しさん
2018/06/29(金) 17:19:15.96ID:y/uBajUK
>>363
セキュリティパッチ無ければ無料です
と言ったら無料選ぶのが客

無料ならjavaで良いね
0366デフォルトの名無しさん
2018/06/29(金) 18:20:16.36ID:6OZlBNWi
>>362
OracleJDKをデモ・評価の範囲を超える配布等の商用利用したらアウトだろう
サポート不要で商用利用する場合はOpenJDKだな
0367デフォルトの名無しさん
2018/06/30(土) 00:45:39.52ID:SNP/nySb
プログラミング超初級です
これからプログラムを学びたいと思って、progateというサイトで練習しています

JavaTは楽しく学習できたのですが、JavaUでifやfor等、多様な構文が出てきて
頭でうまく整理が付きません
プログラム向いてないんでしょうか?
0368デフォルトの名無しさん
2018/06/30(土) 02:30:39.07ID:yaCLVjK3
むりやりやらされてるの?
たった数時間の勉強で向いてないんじゃないかと心配するほどモチベーションが低いことのほうが、問題だと思うよ。
0370デフォルトの名無しさん
2018/06/30(土) 12:00:29.96ID:Wg+LSNTR
ちんちんの話
0372367
2018/06/30(土) 12:40:24.30ID:SNP/nySb
>>368
仰るとおりですね、根を上げるには早すぎると思います
まだまだ時間を使って、一つ一つを学習していきたいと思っています

Javaに触れてみて思ったのですが、自分はプログラムってもっと数学的なものだと思っていたのですが
英語の文法を覚えるのに近そうですよね
私は数字には強いですが、英語などの言語が超苦手なので向いてないのかなと思いました

Javaが苦手なのか、プログラム全般が向いてないのかが重要だと思ってるのですが
Java以外の他の言語なら、また違うでしょうか?
0375 ◆QZaw55cn4c
2018/06/30(土) 12:59:15.79ID:BPi0VHAg
>>367
一度でマスターできないのは当たり前で、なんどとなくいろんな課題に適用していくことで理解した思えるようになります
そういう課題は自分でみつける必要はありますが

>>368
モチベーションは自分の意志ではどうしようもない、天から降ってくるものなのでは?
0376デフォルトの名無しさん
2018/06/30(土) 14:22:19.92ID:Ms0oF+PT
>>372
数学の教科書だって自然言語で書いてあるでしょ
プログラミング言語の文法程度のことが覚えられないなら
知的労働には向いてないよ
0377デフォルトの名無しさん
2018/06/30(土) 15:59:07.87ID:SNP/nySb
ありがとうございます
数をこなしていくことで覚えていきたいと思います

https://prog-8.com/users/sign_in#/42
しかし、やはりというかprogateのJavaUの総合問題が、何度挑戦しても難しすぎます

慣れている人なら、こういう難問でもスラスラとコード書けちゃうんですかね?
問題が難しすぎるだけだったりしますか?
0379デフォルトの名無しさん
2018/06/30(土) 16:11:33.20ID:+7yWvOia
>>378
この程度なら文系大卒未経験でも新人研修3日目くらいには余裕でできる
中にはできない奴もいるが、経験上、そういう奴は最後まで決してできるようにはならず、試用期間切りかスタッフ職
0380デフォルトの名無しさん
2018/06/30(土) 17:24:21.46ID:oywXZrZh
奇数の和は26です
偶数の和は23です

このくらいのギャグをかますセンスが欲しいところだ。
0381デフォルトの名無しさん
2018/06/30(土) 18:35:48.68ID:m2uqFRio
>>377
大量のデータを条件によって分けて処理するのはよくあることだからできないとお話にならない
0382デフォルトの名無しさん
2018/06/30(土) 18:59:47.95ID:Zdmuabpa
この問題みてて、そういえばStreamって分岐できないんだよなぁ、
ってことを思った。
0383デフォルトの名無しさん
2018/06/30(土) 20:08:19.22ID:SNP/nySb
今2週目をやってみたのですが、昨日のことがウソのように
スラスラと解けました
こんな簡単な問題に頭を抱えて悩んでいる人たちがいると思うと、笑えてきますね
プログラムって、ちょろいかもしれません
0386デフォルトの名無しさん
2018/06/30(土) 21:02:19.65ID:ZTLc6SDl
俺もjava始めたばっかりの初心者なんだがこの問題解けないわ
0388デフォルトの名無しさん
2018/07/01(日) 12:11:03.57ID:oSgDfxs0
Java少し前に始めたけどprogateより参考書読んだ方が圧倒的に理解できるぞ
始めるきっかけでprogateは悪くはないと思うけど
0389デフォルトの名無しさん
2018/07/01(日) 14:26:54.09ID:yaDvqYhr
参考書を読む、試す、の繰り返しで良いんではないかな。
0391デフォルトの名無しさん
2018/07/02(月) 08:23:40.31ID:G0LOf4TF
スッキリわかるjava入門の命令実行の文の所の後半よくわからないんですが
読み飛ばしても後々問題ないですか?
0393デフォルトの名無しさん
2018/07/02(月) 09:42:59.20ID:/q8FZihl
その本に何が書いてあるかわからないので読み飛ばして良いかどうかもわからない。
その本が出る前に初心者ではなくなってしまったのでその本をこれから買う気は起きない。
0394デフォルトの名無しさん
2018/07/02(月) 09:47:04.17ID:HD8gmjU2
JVMが実行されるときにパイプライン上で分岐が生じるかどうかを聞いてるのだと思うけど(すげー適当)
0395デフォルトの名無しさん
2018/07/02(月) 10:23:37.86ID:G0LOf4TF
>>393
すいません。この本はjavaの初心者入門書で
System.out.println();←こんな感じの命令実行文の説明してる章(第2章)みたいなんですけど何を伝えたいのかよく分からなくて^^;
他にもSystem.out.printとかint. =Math.max (?)のこととか書かれてるんですけど…
こういう命令文もあるんだ〜程度に覚えて次に進んでも問題ないですかね・・それともガッツリ覚えてから行かないとどっかで躓きますかね・・・ 
0396デフォルトの名無しさん
2018/07/02(月) 11:34:34.56ID:9wGdj7CA
Ruby で書くと、
puts "あいう"

画面表示するだけの関数だから、一々、覚えなくてよい
0397デフォルトの名無しさん
2018/07/02(月) 11:57:56.38ID:G0LOf4TF
ここが命令を実行させる文とだけ覚えておけば問題ないですか・・ね
初心者すぎる質問でしたが答えていただきありがとうございました
0398デフォルトの名無しさん
2018/07/02(月) 12:27:22.30ID:HeCnpISr
良くできた本は最初から順にひとつづつ読んでいくのが一番良い。
このタイプの良本は教科書やロングセラーに多い。
適当に思い付きを並べた糞本は順に読んでも意味がない。
というかどう読んでも意味がない。
0400デフォルトの名無しさん
2018/07/02(月) 12:31:28.49ID:HeCnpISr
>>399
たとえばドラゴンブックはよくできた本の一つだな。
0401デフォルトの名無しさん
2018/07/02(月) 12:44:32.96ID:7ATQpDYX
普通はわからない所が出てきたら手前の方のページに説明が書いてあると思うのでそれ見れば良い。
必ずしもそうとは限らないが。その場合は索引見ればいいかな。
0402デフォルトの名無しさん
2018/07/02(月) 13:03:39.93ID:CzcwSgJn
その章の冒頭にどういった意図で内容を説明しているとか書いてないのん?
0403デフォルトの名無しさん
2018/07/02(月) 15:34:52.77ID:6MU/ELtX
>適当に思い付きを並べた糞本は順に読んでも意味がない。
Effective Javaのことか?w
0404デフォルトの名無しさん
2018/07/03(火) 13:59:37.26ID:CyvRpAiw
System.out.printlnはその本の後半で説明してるれるから飛ばしても問題ないよ
自分もその本の読んだけど個人的にはモウチョイ詳しく書いてほしかったな
printとprintlnの違いについてすら書いてなかったし
0405デフォルトの名無しさん
2018/07/04(水) 21:56:46.88ID:gFgZc5FG
NJG
0407デフォルトの名無しさん
2018/07/07(土) 16:05:41.45ID:aa52jsH+
よろしくお願いします

public class HelloSampleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
(略)
Button btClick=findViewById(R.id.btClick);
AListener listener=new AListener();
btClick.setOnClickListener(listener);
}
private class AListener implements View.OnClickListener{
@Override
public void onClick(View view){
}
}
}
onCreateメソッド内のsetOnClickListenerに関しての質問です。
Button型のインスタンス btClickが、なぜ(どうやって?)set.OnClickListenerメソッドを使えるようになっているのでしょうか?
0410デフォルトの名無しさん
2018/07/07(土) 16:19:54.19ID:9/rBHklo
>>407
ButtonがViewを継承してるからじゃねっすか
0412デフォルトの名無しさん
2018/07/08(日) 20:49:11.79ID:jlZqZIEk
ラズパイ+Netbeans+JavaFXでGUIアプリを作りたいんですけど、どうしても環境が作れません。

https://netbeans.org/kb/73/java/javafx-setup_ja.html
ここに従って新しいJavaプラットフォームを作るように言われて作るのですが、JavaFXタブがありません。
上記の環境を構築できた方いらっしゃらないでしょうか。
0414デフォルトの名無しさん
2018/07/08(日) 21:51:32.10ID:jlZqZIEk
>>413
じゃあ、javaでGUIはどうしたらええのん?
昔のSwingとかを使うのが正しいのん?
0416デフォルトの名無しさん
2018/07/08(日) 22:06:11.29ID:i8SXyieH
NetBeansとかIntelliJ IDEAとかはSwing製なので
まだまだイケるんじゃないかな
0418デフォルトの名無しさん
2018/07/08(日) 22:20:42.99ID:jlZqZIEk
やめとか、以外で実現方法の知識がある方いましたらお願いいたします。
0419デフォルトの名無しさん
2018/07/08(日) 23:31:34.26ID:XkcpXb4y
普通にHTMLでよくね?
配布するならElectronとかでバッケージ化したくなるけど、
ラズパイならどうせ固定用途だろうからローカルサーバーで何の問題もないでしょ
0420デフォルトの名無しさん
2018/07/08(日) 23:32:43.59ID:Sc2HkkvQ
ラズパイって何するんですか…?
電気工作?
ロボットでも作るんかね
0421デフォルトの名無しさん
2018/07/08(日) 23:36:30.10ID:jlZqZIEk
条件は変えないで、知識が在る方がいましたらアドバイスお願いします
違う方法のアドバイスはご遠慮します

>>419
できない

>>420
GPIOが必要な案件で尚且つGUIが必要
0422デフォルトの名無しさん
2018/07/08(日) 23:38:58.97ID:toxXARvC
JavaでGUIか
JavaFXのWebViewのみを使ってElectronみたいなのはアリかもな
Electronとの違いはJavaScriptではなくJavaで書けること
0424デフォルトの名無しさん
2018/07/09(月) 00:09:15.98ID:AUfS73UG
ラズパイだとnode-redとかじゃねーかな
javascriptとcになっちゃうけど
0425デフォルトの名無しさん
2018/07/09(月) 06:48:47.54ID:wOPKveTX
>>421
何ができないんだろう?
Spring Bootとかで普通にWebアプリとして作れば裏側はJavaで書けるしローカルで完結して動かすこともできるしライブラリがあればGPIOも使える
条件は完全に満たしてる
Javaのクライアントテクノロジなんて今から絶対に手を出してはいけない
0426デフォルトの名無しさん
2018/07/09(月) 13:53:15.39ID:RPo/jFjY
今は、クライアントを、Java にはしない

Ruby, Python, Java など、すべての言語で、HTML, CSS, JavaScript。
どのフレームワークでもそう

Rails でも、Node.js が必須。
jQuery, Vue.js とか

電子工作なら、Python
0427デフォルトの名無しさん
2018/07/09(月) 14:01:10.35ID:RPo/jFjY
5ch ブラウザなど、Java で画面を作っているアプリもあるけど、
結局、誰も保守できなくなるから、開発者がいなくなる

こういうのを技術的負債と言う

君「誰か、JavaでGUI を作れる人、いませんか?」
全員「いません!」w
0428デフォルトの名無しさん
2018/07/09(月) 14:52:34.10ID:5GBDda87
5chの専ブラは2chの頃にクローズドにしてフリーソフト閉め出したという特殊な事情があるからここで挙げる例としては適切ではないと思う。
0429デフォルトの名無しさん
2018/07/09(月) 16:11:42.84ID:OMEWQnbN
これまじでいい
https://goo.gl/uAcy7u
0431デフォルトの名無しさん
2018/07/09(月) 16:36:36.00ID:H+d2FLX/
基本情報とりたいし、phpとかrubyじゃなくてjavaやろうと思うんだがこれでいいの?CtoCのWebサービス作りたい
0432デフォルトの名無しさん
2018/07/09(月) 16:54:57.75ID:49BAkqpD
>>431
できなくはない
適切な答えを返すためには質問がいくつかある

・なぜ基本情報を取りたいのか?
・基本情報を取るかwebサービスを作るかどちらしかできないとしたらどちらをやる?
・html、css、javascriptを深く理解する気があるか否か
・そのサービスのスマホ連携の有無
0434デフォルトの名無しさん
2018/07/09(月) 17:03:21.82ID:H+d2FLX/
>>432
・基本情報は就職用。
・どっちかだけっていうならwebサービスを作りたい。
・html/cssは一通り勉強した。あれを深く理解するっていうのの意味がわからない…
・スマホとは連携させたい。

同じような自問をしたことがあるけど、やっぱり基本情報は表計算で乗り切ってphpとか勉強した方が良いんだろうか…
0435デフォルトの名無しさん
2018/07/09(月) 17:09:23.33ID:49BAkqpD
>>434
大体わかった
それを踏まえて最後の質問だ

・phpやrubyを使うであろうWeb系とjavaを使うであろう業務システム系、どちらに就職するつもり?
0436デフォルトの名無しさん
2018/07/09(月) 17:12:52.53ID:H+d2FLX/
>>435
webかなあ
0438デフォルトの名無しさん
2018/07/09(月) 17:18:59.36ID:49BAkqpD
>>436
OK
そうするとお前が学ぶ意味があるのはphpかrubyで間違いない
基本情報の資格はお前のキャリアに必要ない。当然javaに手を出す必要もない

ただしjavaやって資格取って業務系で食うよりも人生の難易度は上がるだろう
何か質問はある?
0439デフォルトの名無しさん
2018/07/09(月) 17:22:25.10ID:H+d2FLX/
>>438
特にない。ハードモード楽しみます。参考になりますた。
0441デフォルトの名無しさん
2018/07/09(月) 18:54:45.22ID:rKnQV5/G
いやWeb系でも自社事業やってるようなとこだとJavaや.NET使ってるのも珍しくないぞ
Web制作に近いようなとこより、大抵そういうとこの方が金払いいいし技術レベルも高い
0443デフォルトの名無しさん
2018/07/09(月) 19:24:11.29ID:mEAcYnRs
その一握りに入れないならWeb系に行く意味なんかないでしょ
大したスキルもなく裁量もなくゴミのような単価でクソを垂れ流すだけ
業務系の方が遥かにマシだ
0447jlZqZIEk
2018/07/09(月) 21:50:21.93ID:AGPubLJK
もう諦めてSwingで書くことにしました
JavaFX、NetBeans、RaspberryPiで検索すると海外でも同じことで悩んでいる人がいるみたいだけど、
どうにもならないみたいですので
みなさん、ありがとうございました。
0451デフォルトの名無しさん
2018/07/10(火) 07:44:34.52ID:LbQkaO6y
>>431-439
まずこの本で、オブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014

基本情報処理なら、スッキリで十分だろ

その後「たのしいRuby 第5版、2016」を読んで、
無料のRails チュートリアルをやる
0453デフォルトの名無しさん
2018/07/10(火) 09:26:50.98ID:lWNPDM52
>>450
自社サービスは自分で設計して自分で作るぞ
うちもエンジニアの大半は社員で全員コード書いてる
自社サービスには人員需要の波がないからエンジニアを抱えることに対して抵抗がないんだよ
0454デフォルトの名無しさん
2018/07/10(火) 11:08:35.50ID:4FJ8yfil
と火曜の9:30に会社から書き込みをしている社蓄が申しております
0455デフォルトの名無しさん
2018/07/10(火) 12:53:17.79ID:lacLn2e2
9:30なら俺はまだ通勤の電車の中だな
0457デフォルトの名無しさん
2018/07/11(水) 21:35:10.75ID:sDWfv/VL
mainメソッド内の処理において、ポリモーフィズムでnewの使い分けする時ってif文使わない方が良い?
やはりファクトリクラス作って、ファクトリのメソッド内でif文使うべきなのか?
0458デフォルトの名無しさん
2018/07/12(木) 09:34:46.57ID:nIR9VMIg
規模や使用頻度によるのでは?
0461デフォルトの名無しさん
2018/07/13(金) 01:27:43.49ID:xF0Xme8F
返答ありがとう
mainメソッドにif文はあまりつけないべきか悩んでいたのだが、そんなに拘るものでもないのかな
参考になりました
0462デフォルトの名無しさん
2018/07/13(金) 16:30:20.76ID:GBG+HB3a
よろしくお願いします。

Intent intent=getIntent();
String stdNo=intent.getStrintExtra("stdNo");

2行目のintentがインスタンスとして使われてるように見えるのですが
1行目のintent=getIntent();は、getIntent()というメソッドを変数intentに代入して
2行目で代入したgetIntent()のメソッド、getStrintExtra()を使っているということなのでしょか?
0463デフォルトの名無しさん
2018/07/13(金) 16:37:43.58ID:7jgvez+k
Javaではメソッドを変数に代入することはできない
getIntent()はIntentのインスタンスをreturnするメソッドなんだろ
getStrintExtra()でStringのインスタンスがreturnされてきて変数stdNoに入ってる二行目と一緒やん?
0464デフォルトの名無しさん
2018/07/13(金) 16:49:49.29ID:GBG+HB3a
>>463
ありがとうございます。1行目のintentはインスタンスなのですね。
インスタンスはnewで生成する以外にもreturnで取得する方法もあるのですね、勉強になります。
0467デフォルトの名無しさん
2018/07/14(土) 00:49:26.90ID:Qt+zgvv2
jdk11でjavafxが分離されるという話があるけど、
アプリにjavafxのライブラリを同梱するという形態になるんですか?
0468デフォルトの名無しさん
2018/07/14(土) 01:52:18.14ID:6eX3jxiA
>>467
分離じゃなくて廃止ね
オラクルとしては開発を放棄し、OpenJFXだけ残して提供終了
でOpenJFXというのはOracleの開発成果をGPLの下でソースを公開するだけの実体のない組織なので、開発継続の見込みはゼロ
もう無理や
0469デフォルトの名無しさん
2018/07/14(土) 06:08:21.38ID:KbpgtKf9
windowsでコマンドライン引数とかコンソールへの出力にユニコード使ってると、正しく処理できないっぽいですが、
そういうのちゃんとやってくれる定番のライブラリとかありますか?
0471デフォルトの名無しさん
2018/07/14(土) 08:24:20.86ID:rKXc4KlJ
>>467
これ俺も気になってる
JavaFXってJARだけでなくDLLなどのネイティブライブラリも必要なので
JavaFX(openjfx)使ったアプリの配布はプラットフォーム別に用意しないといけなくなるのかな?
0472デフォルトの名無しさん
2018/07/14(土) 10:21:43.78ID:zOneeAc4
OpenJDKやOpenJFXに部外者が参加しようと思ったら、私が提供する著作物はオラクル様が自由に使えます
絶対に訴えたりしませんっていう誓約書にサインしなきゃいけない
あれを見直さない限りコミュニティプロジェクトとしての発展はありえない
ただでさえJDK11の件でオラクルに対する不信感が高まってるのに今更誰がオラクルにケツを差し出す気になるだろう
0474デフォルトの名無しさん
2018/07/14(土) 12:57:15.02ID:Qt+zgvv2
JavaFXのJDKから廃止というのはJREからも廃止ですか?

OpenJDKのインストール方法を調べたらRedHatからダウンロードしろと。
しかもそれは開発者向けでエンドユーザー向けじゃない。
エンドユーザー向けJavaアプリが生き残る方法はあるのか?
0476デフォルトの名無しさん
2018/07/14(土) 13:01:17.39ID:Qt+zgvv2
どれが嘘だと思いましたか?
0477デフォルトの名無しさん
2018/07/14(土) 13:11:09.79ID:Qt+zgvv2
エンドユーザー向けのOpenJDKのインストール方法は見つからない。
つまり、環境変数の設定やコマンドラインを必要としないインストール方法が無い。
0479デフォルトの名無しさん
2018/07/14(土) 13:23:07.56ID:6PGIbnJP
>>468
君がやればいい。

これにて一件落着。
0480デフォルトの名無しさん
2018/07/14(土) 13:28:52.18ID:Qt+zgvv2
公式が配布するOpenJDKはtar.gz形式でwindowsの標準機能で解凍できない。

GPL感染はプロセスを超えないそうなので、
OpenJDKをパッケージに同梱してしまうのは解決策になるかもしれない。
その場合、起動スクリプトを組み込む必要があるし、OpenJDKのアップデートにどう対応するのかという問題がある。
windows向けOpenJDKインストーラ&アップデータを誰かが作る事も考えられる。
しかし、公式サイトへのポーリングや自動的なファイルのDLをしていいのかどうか。
0481デフォルトの名無しさん
2018/07/14(土) 13:30:03.02ID:6PGIbnJP
>>469
windows でも cygwin 使ったり wsl 内で動かせば問題なくできるのでは?

ていうかそういうOSとか実行環境の問題をそこの中で動かされるプログラムでなんとかしようというのは考え方がおかしいのではないか?
どうしようもない場合は別としても、やはり実行環境側でやらねばならない事は実行環境側でやるべきだろう。
0482デフォルトの名無しさん
2018/07/14(土) 13:38:51.88ID:6PGIbnJP
>>480
そういうの主要な Linux ディストリビューションだと悩まなくていいのにな。ネットワーク経由でアップデートする yum だの apt だのがあるから。
Windows には Windows Update があるが、あれはMS専用でMSが受け入れてセットしてくれない限り使えないよな。
0483デフォルトの名無しさん
2018/07/14(土) 13:39:28.58ID:a3ey9pgq
ライセンス気にするようなアプリ開発するならOracleと契約結べよw
0484デフォルトの名無しさん
2018/07/14(土) 13:44:48.39ID:Qt+zgvv2
本当に自分の中でLinuxの評価が上がってる。
みんなそろそろLinuxデスクトップに移行すべきじゃないか。
ゲームエンジンはLinux向けビルドが出来るし、古いゲームでもおおむねWineで動く。
0485デフォルトの名無しさん
2018/07/14(土) 13:58:16.02ID:LIsDU/xs
>>474
スタンドアロンなJREは廃止
Java SE Subscription を契約した上でアプリに同梱して配布するのが正解
価格は、開発環境も実行環境も(!)PC1台一月あたり2.5ドルから
一日10円の御賽銭でオラクル神の手厚いサポートが受けられるんだから安いもんだよね
0487デフォルトの名無しさん
2018/07/14(土) 14:06:15.27ID:upwDNa7V
リナックスでもマックでもウインドウズでも
動くソフトはこれから何で作ればいいの?
0488デフォルトの名無しさん
2018/07/14(土) 14:15:19.81ID:Qt+zgvv2
OpenJDKを使うしかない。
アプリに同梱するんだが、アップデータもJavaだから、恐らくOpenJDKを2個インストールして、
Aでアップデータを実行してBをアップデート、
次にBでアップデータを実行してAをアップデート、みたいにやるしかないだろうw
0490デフォルトの名無しさん
2018/07/14(土) 14:54:39.00ID:Qt+zgvv2
OpenJDK+OpenJFXをアプリ同梱、
起動スクリプトでOpenJFXのDLLにパスを通してOpenJDKからアプリのjar起動。
とかでいける・・・のか
0491デフォルトの名無しさん
2018/07/14(土) 15:09:18.44ID:Qt+zgvv2
JavaでDLLとかのネイティブコードをアプリ毎に用意させるのは例外的で
そういう方法は確立していないし、
JavaFXのようなクライアントソフトで使われる機能は
エンドユーザー環境で構築しなきゃいけないことが多々あるわけで、
全く破滅的としか思えないが、
JavaFXは情熱的で盛り上がっているコミュニティだとか言われてる。

JavaFXはOracleJDKでしかサポートされてなかったがそれが有償化される、
しかも自分が払えばいいだけじゃなくエンドユーザーもオラクルに金払わないと使えない、
やはりクライアントソフトで使われる技術で大量のエンドユーザーが居る事が多い、
JavaFX開発者は一番フェイント食らっただろう。
0493デフォルトの名無しさん
2018/07/14(土) 15:42:21.59ID:4RxIMQwD
GUI は、HTML, JavaScript が基本。
Rails でもそう。Vue.js でも使えば?

>>480
ファイルの圧縮解凍なら、7-zip を使えば?

Windows のパッケージマネージャーなら、
NuGet, Chocolatey, Microsoft Web Platform Installer, Scoop とか

Windows10 では、NuGet, Chocolatey を使った、
MS 製のPackageManagement(OneGet)が標準搭載された
0494デフォルトの名無しさん
2018/07/14(土) 16:15:15.01ID:Qt+zgvv2
解凍処理はアップデータが動作できてる時点でなんかライブラリ使えばいいんだけど。

DLLの問題は、JNIのDLLロードと違って、JavaFXはエントリーポイントからJavaFXのクラスだから、
起動前にDLLのパスが分かっている必要がある。
だから、起動スクリプトでやることになるだろう。
しかし起動スクリプトはOS毎に用意する必要があり、Javaのメリットが薄れる。
もしオラクルがJDK11で何かそのあたりの対策を発表しなかったら、杜撰としか言いようがない。
0497デフォルトの名無しさん
2018/07/14(土) 17:04:10.87ID:Qt+zgvv2
https://www.gnu.org/licenses/gpl-faq.ja.html#IfInterpreterIsGPL
>しかし、インタープリタが他の機能(多くの場合ライブラリですが、
ライブラリである必要はありません)への「バインディング」を提供するように
拡張されている場合、解釈されるプログラムはバインディングを使うことによって
事実上それらの機能とリンクされることになります。ですから、
もしそういった機能がGPLのもとでリリースされているならば、
機能を利用している解釈されるプログラムはGPLと両立する形で
リリースされなければなりません。

OpenJDK、OpenJFXはリンク例外がついているので、
アプリに同梱しても非GPLを維持できる、と思う。
こっそりリンク例外が取り外されたりしないか注意しておく必要がある。

やはり、アプリ同梱作戦で何とか乗り切れるだろう。

Swingにすればjfx問題は無いんだが、結局oracleJDKが有償化されるから
アプリ同梱作戦は必要だから、さほど楽になるわけではない。
javaFX自体はかなり良い印象があるし。
0498デフォルトの名無しさん
2018/07/14(土) 17:09:59.99ID:FtH+pgzS
今更騒いでもなあ
Oracleに買われた時点でクライアントJavaに未来がないことなんか分かりきってたでしょ
次は乗る船を間違えないこと、間違えたと分かったらすぐに降りること
だいじなことだぞ
0499デフォルトの名無しさん
2018/07/14(土) 17:14:54.56ID:Qt+zgvv2
まだJavaで正解だったとは思ってんだよなあ
0500デフォルトの名無しさん
2018/07/14(土) 17:30:58.33ID:Q0JU5eRb
あるライブラリを使う必要が出てきて、C++用のがなくて、C#にするかJavaにするか迷って、結局Javaにしたんだけど、道を誤ったか。
また環境構築や言語の勉強に何か月もかけるなんて、うんざりするわ。
0502デフォルトの名無しさん
2018/07/17(火) 19:12:47.68ID:sYfkxtZj
>また環境構築や言語の勉強に何か月もかけるなんて
なんでそんなに時間掛かるの?
二つ目以降でそんなに時間掛かるとしたら能力無さすぎ。
0504デフォルトの名無しさん
2018/07/17(火) 19:45:05.49ID:lbJGoJLr
伸びたり縮んだりしそうだな
0507デフォルトの名無しさん
2018/07/17(火) 20:53:49.04ID:BDOR0qc4
>>503
よう、無能。
何カ月もかけるとかねーわ。
Javaは最も習得が楽な部類の言語だから他の言語は1年はかかるんじゃないかと思うけど頑張ってな。
0508デフォルトの名無しさん
2018/07/17(火) 20:57:13.31ID:KCeYVDaR
javaはOS環境の細かいこと覚えなくていいから楽だよな
0509デフォルトの名無しさん
2018/07/17(火) 21:20:10.72ID:lbJGoJLr
Javaそのものは楽だがライブラリが多くて最初は何をやる時に何を使ったら良いかよく分からなくて大変かも。
わからなくて自作してしばらくしてからライブラリの中から発見するとかなw
0511デフォルトの名無しさん
2018/07/17(火) 21:30:04.34ID:WkP7uW+n
Javaは完ぺきな言語に見えたけど、色々建て増しして便利にはなったけど当初の完全さが失われていったな。
0512デフォルトの名無しさん
2018/07/17(火) 22:04:55.58ID:kkggISKf
そうかな?
俺が使い始めた頃は重くて使い物にならんってのが評価だったような
0517デフォルトの名無しさん
2018/07/18(水) 09:10:55.41ID:qdiAbYc/
正直オラクルに比べたら100倍マシ
今は亡きJ#のように、Javaを.NET Core上に実装してみんなで移住するのが一番幸せな形だと思うわ
オラクルはAPIの著作権とかいう謎ワードで潰しにくるだろうけど
0518デフォルトの名無しさん
2018/07/18(水) 09:53:18.89ID:9IEVAZpR
>>512
Java Applet がブラウザで動いたお陰で世に広まりはしたが初期化で時間が掛かりすぎ、そのため Java は遅いという印象もより多くの人に広めることになってしまったのではないかと思う。
そして確か1998年にはLinusがJavaは死んだと言っている。20年前だ。確かにPCのデスクトップ環境では死んだも同然だった。
まあしかしLinuxもクライアント環境としては市場に受け入れられず死んだも同然で、みんなしてサーバや組み込み機器に逃れた感じではある。
クライアント環境でのLinuxとJavaはAndroidとしてスマホに組み込まれなければこんなに広まることはなかったかも知れない。
0521デフォルトの名無しさん
2018/07/18(水) 11:32:18.31ID:7RCNVxRQ
>>518
20年前っていうとダイアルアップ主流の時代だっけ?
時代を先取りしすぎたんだなぁ
どっちにしろセキュリティ的にだめな気がするけど
0522デフォルトの名無しさん
2018/07/18(水) 12:06:42.81ID:tghCYv44
失敗例でいうとJavaはあちこちで失敗してるね
日常すぎてわざわざ話題にならんけど
0524デフォルトの名無しさん
2018/07/18(水) 13:33:17.95ID:9IEVAZpR
Write once, Bug anywhere.

OS毎にバグの入り具合が違う。
0525デフォルトの名無しさん
2018/07/18(水) 13:55:40.65ID:imuZ+lX2
初心者質問で恐縮ですが、世間様では初期化不要なコンストラクタも一応書くのでしょうか?省略するのでしょうか?

派遣の年上の人からルールだから書けと言われ気になりまして
0530デフォルトの名無しさん
2018/07/18(水) 15:11:32.95ID:ouSD5X5G
>>527
IBMはセールスフォースでも裁判沙汰だから
言語の問題じゃない、マネジメントの問題
0531デフォルトの名無しさん
2018/07/18(水) 15:13:11.38ID:ouSD5X5G
伊達に30億のデバイスで動いてるわけじゃねえぞ
てめえらあんま舐めてっとあれだからな
0533デフォルトの名無しさん
2018/07/18(水) 15:35:58.01ID:6/qiKP15
>>525
「初期化不要」とはどういう意味?
フィールドが一切なく、static(みたいな)クラスのことか?
デフォルトコンストラクタのことなら、「初期化不要」とは言わないぞ。
0534デフォルトの名無しさん
2018/07/18(水) 16:30:02.33ID:4ELcifB5
ぺろぺろ
0536デフォルトの名無しさん
2018/07/18(水) 17:57:49.02ID:OmO21Xy3
なんとかぎゃふんといわせたい(笑)
>派遣の年上の人からルールだから書けと言われ気になりまして
0537デフォルトの名無しさん
2018/07/18(水) 20:28:43.76ID:E4ArJsFy
8月からIT企業に入社します
研修があるので、早めに予習しておきたいのですが
開発環境をどうしたらいいか困ってます

VBAでjavaをすると電話で聞いたのですが
見たところjavascriptでしか見たらず、開発環境はイクリプスでしかネットでも記事が出てきません
VBAで開発環境にしている方はどのように行ってますでしょうか
0539デフォルトの名無しさん
2018/07/18(水) 20:39:56.57ID:3T+bsJq5
>>537
>VBAでjavaをする

それは一体どういう状況なのか?
何か聞き間違えていないか?

それと、開発環境は君が決めても構わないのか?
普通は会社で指定されてたりしないか?
0540デフォルトの名無しさん
2018/07/19(木) 00:23:47.65ID:WcB0Ld3E
>>539
予習するだけです
C#は余裕してるので問題ないんですが
そもそもVBAでjavaを作動させることはできるんでしょうか?
0541デフォルトの名無しさん
2018/07/19(木) 00:47:04.50ID:I2KiLRYY
VBAからJavaで作ったアプリを起動する…とかなのか?
VBAやるならMSExcelが必要
0542デフォルトの名無しさん
2018/07/19(木) 07:30:41.13ID:X7flfBN8
>>533
はいフィールドのない小さいクラスのデフォルトコンストラクタです

アクセサメソッドみたいに丁寧に書くのがしきたりなのか世間様の動向を知りたく
0543デフォルトの名無しさん
2018/07/19(木) 07:39:20.31ID:B62Oo3TM
>>542
仕事の規模にもよるが、ソースコードを保守しやすくするためにコーディングの方法が決められている(コーディング規約がある)現場が殆ど
ちゃんと統一されてるなら従ったほうが無難

仮にバグが発生してあなたの追加部分が規約に従ってない場合、面倒くさいことが発せあする可能性がある
0545デフォルトの名無しさん
2018/07/19(木) 08:06:40.53ID:SUmbWwrd
>>542
フィールドがないならインスタンス生成を禁止するためにprivateコンストラクタを必ず定義すべきなんじゃないの?
0546デフォルトの名無しさん
2018/07/19(木) 08:14:00.46ID:H+BjTpO8
そんな細いことまで規約で定めている現場はソフトウェアの品質が低い
俺の経験ね

品質管理担当とか専任者がいても規約に沿っているかという杓子定規な現場が多く
規約化できないビジネスロジックの妥当性はなぜかチェックしない傾向あり

しょーもない規約がなる揺らぎを許容する現場は
チェックリストに沿った均一的な検査はできないものの
分かっている人がビジネスロジックを査読しようとする傾向がある
0547デフォルトの名無しさん
2018/07/19(木) 08:16:26.97ID:MYiqAgsV
ルールに従っている限り、問題が起きた場合はルールを作った奴の責任
これ典型的なSI業界の考え方
上から下までSIに身を置く限りは極めて重要な大原則ではあるが、悪く言えば責任逃れだ
この例に限って言えばわざわざ破って余計なリスクを負うほどの価値があるとは思わないが、今後同様に自分で責任を負わないという判断をするときには
それがエンジニアとしての自分の価値を下げているということを頭の片隅に置いておいたほうがいい
どんな業界でも、本当に上へ行く奴は自己責任でやるもんだ
0548デフォルトの名無しさん
2018/07/19(木) 08:21:20.97ID:B62Oo3TM
>>544
俺も大体>>546と同じ考えだから「規約!」「厳守!」という凝り固まった考えにはならないように注意な

チェックする側が知識ない人って事もあるから余計に規約に従ってるか重視するんじゃないだろうか
0549デフォルトの名無しさん
2018/07/19(木) 08:38:28.86ID:B62Oo3TM
>>544
後あれだ
なんでこんな規約があるんだって考えるのも最初は勉強になるぞ

件のデフォコン必須!とかはリフレクション多用してて落ちたことがあったからそのまま規約になった〜とか理由があるかもしれない
0550デフォルトの名無しさん
2018/07/19(木) 08:46:17.55ID:5x41Wecj
javaはもうwebの世界でしか生きていけないのかな
0554デフォルトの名無しさん
2018/07/19(木) 09:02:43.68ID:Op5duy3q
スカラより簡単ピエチピより厳密
アプリサーバがたくさんあって人材も豊富
作っているのは世に名も高きオラクル
Java最強伝説
0556デフォルトの名無しさん
2018/07/19(木) 11:32:42.94ID:MIkQQrXR
Kotlinもよろしく
0559デフォルトの名無しさん
2018/07/19(木) 13:35:56.12ID:lzwulHPo
Javaの知識があってのKotlinだけどな。
Nativeは知らんけど。
0561デフォルトの名無しさん
2018/07/19(木) 18:49:13.04ID:6E4STiKC
googleはjavaでオラクルに一兆円の損害賠償払うのにjavaは捨てられないのかな
0562デフォルトの名無しさん
2018/07/19(木) 18:52:53.52ID:6E4STiKC
オラクル社長はドラ息子に巨万の富を残してるのにまだ足りないみたいね

andoroidの巨額提訴にjava有償化に
0565デフォルトの名無しさん
2018/07/20(金) 03:33:50.65ID:KKufvgV7
Java使いに「も」って、まともな人が居ない事前提?

36歳がそうだからと言って全体を括るのは乱暴かと
0566デフォルトの名無しさん
2018/07/23(月) 06:03:22.92ID:a5odQemo
javaの致命的に糞な所を3つ挙げるとしたら何?
おまけで他言語よりこここだけは良いということ1つ
有料化になること以外でよろ
0567デフォルトの名無しさん
2018/07/23(月) 07:40:33.50ID:tja2UxRY
糞なところ
・貧弱なジェネリクス、極めて非直感的なワイルドカード
・直交性が目的化していて利便性が犠牲になっている標準ライブラリ群
・プログラマの平均スキルの低さ
良いところ
・安い単価でプログラマを大量に調達できる
0568デフォルトの名無しさん
2018/07/23(月) 07:46:24.27ID:r2NgEomY
致命的と思うところはない
だって致命的な欠点があったらJava使うのやめてるだろ

Javaの良いところはクラスライブラリと開発コミュニティ
Java自体の言語仕様は今となっては秀でている点はなく後発言語のほうが優れている
しかしJavaの豊富なクラスライブラリに多言語が追い付くの容易ではない

Java開発者は標準クラスライブラリに沿って・似せてクラス設計する人が多い印象
そのため外部ライブラリを見つけてきてもインターフェイスに一貫性があり使いやすいことが多い

昔、Perlでもモジュールを集めるCPANというものがあったけど一貫性がなくモジュールごとに作法がバラバラだった

Javaの良さは世界中の開発者が設計ポリシーを共有していて作られたライブラリが相互運用しやすいエコシステムにある
0570デフォルトの名無しさん
2018/07/23(月) 18:43:51.10ID:dX14gRVE
それをいっちゃあおしめえよ
0571デフォルトの名無しさん
2018/07/23(月) 19:32:54.33ID:IsAC2rDC
変数宣言が冗長すぎ
Date date = new Date()
Date型って最初に宣言してんだからnewもDateで基本問題無いやろ
0573デフォルトの名無しさん
2018/07/23(月) 19:56:00.68ID:dX14gRVE
型推論してくれるKotlinはナイスだな
0575デフォルトの名無しさん
2018/07/23(月) 20:11:54.87ID:RCR4OhGD
moduleが難しすぎて突破できないから
Java8で行くお!
0577デフォルトの名無しさん
2018/07/23(月) 20:17:45.49ID:m6zef+c0
varはポリモーフィズムとは相容れないから。
0578デフォルトの名無しさん
2018/07/23(月) 20:27:02.30ID:ddy5leO9
>>577
相容れないなんてことは無いだろ。
限られたシチュエーションで使えないだけだ。
0579デフォルトの名無しさん
2018/07/23(月) 22:14:25.10ID:IsAC2rDC
>>572
それならそういうときはそれでいいけど、
Date date;
みたいに省略したときは自動でDateをnewしてくれ
0582デフォルトの名無しさん
2018/07/24(火) 09:02:46.76ID:3bmjSXS4
Kotlin使えばよい
後から作った言語なのでそういう細かいことは解消されている
0583デフォルトの名無しさん
2018/07/24(火) 09:06:29.72ID:WgNXUi2L
>>579
とてつもなく浅い知識で批判とか恥ずかしくないの?
0585デフォルトの名無しさん
2018/07/25(水) 07:32:49.10ID:BeP5/XfH
>>582
ははーん、さてはおめー何もわかってねーな
0586デフォルトの名無しさん
2018/07/25(水) 09:27:06.98ID:GNtg4sP8
>>585
というと?
0588デフォルトの名無しさん
2018/07/25(水) 20:01:38.85ID:ekeRKo17
「ははーん、さてはおめー何もわかってねーな」という台詞を言ってみたかっただけの人か?
0589デフォルトの名無しさん
2018/07/25(水) 20:12:44.09ID:QfwTkRmU
下記ブログの例題がEclipseでもpaiza.ioでもコンパイルエラーになって色々試したのですが解決出来ないので原因と回避策を教えてください
Eclipseでのエラー: 型の不一致: Object から int には変換できません
paizaでのエラー: Object cannot be converted to int


https://nompor.com/2017/11/16/post-1118/
ブログのページ最後にある例題サンプルです
「Iteratorで全要素アクセス」

18行目
int data = it.next();//次の要素を取得します。

---
例題そのままをコピペしてもエラーになるので自力解決が出来なくて困っています
0590デフォルトの名無しさん
2018/07/25(水) 20:17:15.54ID:GZRArLRs
>>589
Iterator it = arr.iterator();
これを
Iterator<Integer> it = arr.iterator();
こうや!
0591デフォルトの名無しさん
2018/07/25(水) 20:20:52.44ID:QfwTkRmU
>>590
それはやったのですが、エラーになりましたね
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
integer を型に解決できません
0592デフォルトの名無しさん
2018/07/25(水) 20:27:16.64ID:QfwTkRmU
自己解決しました
エラーのpopアップに表示されていたキャストをすれば解決しました

もしかしたらブログを執筆していた頃には問題の無かった書き方が厳密になったとかなのでしょうか?
原因が例題書かれた方のミスなのか仕様変更なのか意味が分からないままエラーだけ出なくなった状況ですが次へ進みます。
ありがとうございました

18行目(変更前
int data = it.next();//次の要素を取得します。

18行目(変更後
int data = (int) it.next();//次の要素を取得します。
0593デフォルトの名無しさん
2018/07/25(水) 20:30:23.90ID:QfwTkRmU
そもそもなのですがIteratorって使いますか?
他にも配列などの操作方法あるようですし
どうしてこんな面倒な書き方で参照したりするのか疑問です
0596デフォルトの名無しさん
2018/07/25(水) 20:51:02.31ID:ITmWCwNQ
>>592
それは解決になってない。
キャストで逃げたら、ジェネリック使う意味がなくなる。
0598デフォルトの名無しさん
2018/07/25(水) 21:27:25.94ID:GZRArLRs
>>594
int data = (int)it.next();
int data = (Integer)it.next();
これどちらもオートボクシングが行われてますよ
プリミティブ型で格納されてるわけじゃないっすから

オートボクシング使わずに書くならこう!
int data = ((Integer)it.next()).intValue();
0599デフォルトの名無しさん
2018/07/25(水) 21:49:55.62ID:QfwTkRmU
>>597
13行目
Iterator<Integer> it = arr.iterator();
自分<integer>でミスタイプしてましたねすみません

>>598
勉強になります

>>これどちらもオートボクシングが行われてますよ
>>プリミティブ型で格納されてるわけじゃないっすから
まだ意味がわからないので調べてみます

>>596
>>キャストで逃げたら、ジェネリック使う意味がなくなる。
まだ意味がわからないので調べてみます

ありがとうございます
0600デフォルトの名無しさん
2018/07/25(水) 22:28:09.59ID:QfwTkRmU
>>589
の原因と教えていただいたことを自分なりに調べた結果のまとめと確認です
(連投すみません

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型のオートボクシング機能が働いている
0601デフォルトの名無しさん
2018/07/25(水) 22:28:36.05ID:QfwTkRmU
>>600
これで合ってますか?
最後の「これはInt型とInteger型のオートボクシング機能が働いている」のかちょっとまだ不安です
キャストはしてないけどオートボクシングが働いてたら意味がない?
このあたりがまだよく理解出来てないと思います
>>598 これをふまえると・・・

>>オートボクシング使わずに書くならこう!
>>int data = ((Integer)it.next()).intValue();

13行目(変更後
Iterator<Integer> it = arr.iterator();

18行目(変更後※
int data = it.next().intValue();//次の要素を取得します。

※ここまでやらないと意味が無いのでしょうか??
一応どちらも正常に結果出てますが内部的に違いがあるのか不安です?
0602デフォルトの名無しさん
2018/07/25(水) 22:37:49.97ID:GZRArLRs
>>601
オートボクシングはプリミティブ型とラッパークラスの変換を
自動で行う仕組みのことで

毎回、↓こう書くの面倒だよね
int data = it.next().intValue();

じゃあ↓こう書けるようにしよう
int data = it.next();

ということで導入されたものだから積極的に使ったら良いよ
0603デフォルトの名無しさん
2018/07/25(水) 22:44:09.05ID:QfwTkRmU
>>602
Iterator<Integer> it = arr.iterator();
int data = it.next();

オートボクシングは便利機能なので使ってOKで
.intValue();が自動的に省略されてるだけで結果は同じ

これで解決ってことですね!納得しました!
ありがとうございました
0604デフォルトの名無しさん
2018/07/25(水) 22:44:22.96ID:+qk7Pgth
だね
Integerからintへの変換ではインスタンス生成されないし
intからIntegerへの変換でも数字が小さければインスタンスは生成されない
インスタンス生成を抑えるために小さな数字はあらかじめIntegerオブジェクトが作られていて使い回されるようになっているから
値オブジェクトみたいな感じ

コスト気にするよりオートボクシングを積極的に使って可読性の高いコードを書こう
0605デフォルトの名無しさん
2018/07/25(水) 22:46:30.24ID:GZRArLRs
>>600
ジェネリクスで型を指定すれば、型が間違ってたときにコンパイルエラーに
なってすぐに気づくことができるのだけれども

ジェネリクスで型を指定しないと、型が間違っててもエラーにならないのよ
実行してデータが処理されないとコードが間違ってるかわからぬのよね
エラーが起きないデータもあったりするとデバッグが超大変

ジェネリクスが使えるときは型を指定して使ったが良いよ
0606デフォルトの名無しさん
2018/07/25(水) 22:56:34.68ID:QfwTkRmU
>>604-605
>>コスト気にするよりオートボクシングを積極的に使って可読性の高いコードを書こう
>>ジェネリクスが使えるときは型を指定して使ったが良いよ

質問で丁寧に回答していただきさらにアドバイスまでいただき感謝です!
勉強になりますありがとうございます!
0607デフォルトの名無しさん
2018/07/26(木) 00:12:38.71ID:5ROtQy7H
>>589
それ原因が分かったぞ。(勘のいい奴なら既にわかっていると思うが)。

そのブログのページのソースのこう表示されてる個所あるだろ。

Iterator it = arr.iterator();

この部分の HTML のソースを見てみたらこうなってた。

Iterator<Integer> it = arr.iterator();

しかしこの通りに表示させたいなら HTML 文書の中ではこう書かねばならない。

Iterator&lt;Integer&gt; it = arr.iterator();

他の同じような記述の個所はこういう変換をやっているのにこの部分だけ忘れており
<Integer> 部分がブラウザによって HTML のタグと解釈されて丸ごと表示されない
状態になっていた、ということ。
0609デフォルトの名無しさん
2018/07/26(木) 01:12:56.68ID:3Q0DG2FF
>>607
よく見つけられましたね凄いです!
どなたかがブログへご指摘されてくださったようで確認しようと再度HP確認したら既に修正されていました!
あまりの速さに2度驚きました

この質問スレにもブログにも勉強するのにとても助かっています
いつもありがとうございます
0611デフォルトの名無しさん
2018/07/26(木) 13:20:41.96ID:EM3EzxKL
    ./__.))ノヽ    
    .|ミ.l _  ._ i.)    わしが指摘した
   (^'ミ/.´・ .〈・ リ    
    .しi   r、_) |            ______
     |  `ニニ' /             |  | \__\___
  ___.ノ `ー―i´             |  |   |= |iiiiiiiiiii|
/⌒ヽ  \____/\            |  |   | =. | !!!!!!!|
|   ヽ____| \__. __    |  |   |三 |_「r.、
|  //     // ̄.\ //⊃ヾ)   |__|_/(  ) ̄ ))
ヽ ______//r_/| |.||⌒ヽ〜〔 ̄ ̄! ̄ ̄ ̄/ ̄ ̄\((
0612デフォルトの名無しさん
2018/07/26(木) 20:19:44.88ID:l6j0Y1pF
定義されてるディレクトリ配下のログが誰かに開かれてたら何もしないって処理作りたいんですけど、ファイルが誰かから開かれてるかを調べる方法ありますか?
0613デフォルトの名無しさん
2018/07/26(木) 20:22:42.75ID:l6j0Y1pF
古くなったログの削除の為に使用するためです
0614デフォルトの名無しさん
2018/07/26(木) 20:39:32.04ID:9i/IJhFr
自分でそのファイルを読み取り排他で開いてみるしかない
失敗したら他のプロセスがオープンしているということ

排他(副作用)なしでファイルのロック状態を知る方法はない
0615デフォルトの名無しさん
2018/07/26(木) 21:15:30.96ID:l6j0Y1pF
>>614
ありがとうございます。
明日試してみます!
0617デフォルトの名無しさん
2018/07/27(金) 02:20:59.11ID:O4NPrPXG
>>612
Linux の場合は fuser コマンドを使うと指定のファイルをオープンしているプログラムのプロセスIDが分かる。
何も出力がなければ開いているプロセスはない。

他のUNIX系OSにもこのコマンドはあるかも知れない。Windows の WSL にはこのコマンドはあった。

その他のOSではどうやるか知らないが、もし fuser コマンドがあるのならそれを使えば同じようにできるんじゃないかと思う。

Windows の場合は他のプロセスが開いている最中にリネームしようとするとエラーになるそうなのでこれを利用するという手があるようだ。
但し同じ方法はOSが違ったら使えない(例えばLinuxやUNIX系OSでは使えない。WSLはわからない)。
https://code.i-harness.com/ja/q/153800
0618デフォルトの名無しさん
2018/07/27(金) 06:07:34.18ID:br8yoTOu
paiza.ioってローカルPCのファイルやフォルダ操作するコードは実行出来ないですか?
0619デフォルトの名無しさん
2018/07/27(金) 12:15:33.71ID:4+ImbG1U
>>614
ログを開くアプリケーションによってはロック状態を認識できませんでした。
FileChannelクラスのtryLookメソッドを使いました。
OSがcentosでLibreOfficeで開いてるときはロック状態でしたが、geditで開いたときはロックされてなかったです。
何か初心者がおかしやすいミスとかってありますかね。
もう諦めてるんですがgeditが特殊なんですかね
0620デフォルトの名無しさん
2018/07/27(金) 12:16:37.86ID:4+ImbG1U
gedit以外のテキストエディタでも同じでしたね
ロックの確認できません。
0621デフォルトの名無しさん
2018/07/27(金) 12:58:52.13ID:ki81FzEq
普通はしないよ。
一々ロックしてたら、たとえばGitなんか阿鼻叫喚の地獄になる。
0622デフォルトの名無しさん
2018/07/27(金) 13:04:46.00ID:4+ImbG1U
>>621
そうなんですね
0623デフォルトの名無しさん
2018/07/27(金) 13:26:56.82ID:EBOSMkzO
>>619
UNIX系OSではオープンしただけでは普通はロックまで掛からなくて、別途 flock() したり fcntl() でロックするようになっている。なので本当に必要な場合しかロックしないのが普通だ。

オープンしてるかどうかだけ確認したいなら fuser コマンドや lsof コマンドを使った方が楽だ。
Linux限定で良いなら /proc ディレクトリ以下を自分で探ってもできるけどね。
それだと多分本当にLinuxのみになるし fuser や lsof も Linux 用なら中で同じことしてるだろうから任せた方が良い。
0624デフォルトの名無しさん
2018/07/27(金) 14:29:19.42ID:4+ImbG1U
>>623
色々教えて下さりありがとうございます。
0625デフォルトの名無しさん
2018/07/29(日) 02:53:34.15ID:noej9t8s
javaのバージョンって1.8だったり8だったり表記が複数あるようですが何なんですかこれは
0628デフォルトの名無しさん
2018/07/29(日) 08:38:57.85ID:7lOBGcOb
>>625
Javaのバージョン
https://so-zou.jp/software/tech/programming/java/introduction/version/
意外と知らないバージョン表記・数字の豆知識
http://www.atmarkit.co.jp/ait/articles/1003/26/news106.html

理由はよくわからないが、やはり営業的な理由なんじゃないだろうか。
バージョン番号が大きい方が他の製品よりも良いものであるかのような印象を与えられるから。

Perlなんかは(フリーソフトで誰にも売る必要がないためか)これの逆をやってしまい、大きな変更が
あったのにほんのちょっとしかバージョン番号を上げなかったためにほとんど違いがないと誤解
された事があり、それでその後はバージョン番号の振り方のルールを変えた。
0629デフォルトの名無しさん
2018/07/29(日) 13:22:46.86ID:pFjYaTQt
>>618
ブラウザから、自分のPC 内にアクセスできたら、大変!

何でも盗み放題w
すべての情報が、どこかのサーバーに送られてしまう
0630デフォルトの名無しさん
2018/07/29(日) 21:11:31.52ID:JZa4OXPE
eclipseをphoton にしてワークスペースをそのまま引き継ごうとしたら実行できなくなっちゃった。どうすればいいか教えてちょ
0631デフォルトの名無しさん
2018/07/29(日) 21:23:30.06ID:JZa4OXPE
eclipseをphoton にしてワークスペースをそのまま引き継ごうとしたら実行できなくなっちゃった。どうすればいいか教えてちょ
0633デフォルトの名無しさん
2018/07/30(月) 05:51:28.50ID:HJqNjAI+
>>631
${HOME}.eclipse
を削除してみたらどうだろ

workspaceをバックアップして
空にして、インポートで取り込むとか
0634デフォルトの名無しさん
2018/07/31(火) 23:16:57.30ID:ZNFzWxLv
初歩的な質問になるんですが異なる2つのクラスで1つの値を共有したいときってどういったやり方あります?
class a
String str

class b
a.setStr

class c
a.getStr
大分省略してますがこんなことをやりたいです。
実行順はbで更新した後にcで取得
0635デフォルトの名無しさん
2018/07/31(火) 23:22:07.36ID:3ipQI8/S
クラスbとcのメンバにaクラスのフィールドをもちbとcのコンストラクタでaを設定する
0636デフォルトの名無しさん
2018/07/31(火) 23:30:21.51ID:ZNFzWxLv
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のインスタンスって別物扱いになりません?
0640デフォルトの名無しさん
2018/08/01(水) 07:48:14.65ID:3Ruau8S/
jdk11 ea でローカルswing アプリテストしたいのですが、
・jdk11 ea openjdkを取ってくる
・展開して適当なパスに置く
・path/to/openjdk/bin/java -jar myapp.jar
で起動出来るのでしょうか?
0641デフォルトの名無しさん
2018/08/01(水) 10:26:14.54ID:198aEqhp
やってみりゃいいじゃん
0642デフォルトの名無しさん
2018/08/02(木) 02:22:35.17ID:reX89mAv
通信の優先度を決める事はできますか?
でかいファイルを送受信するけど、他のアプリに影響を出したくなくて、
低い優先度で送りたい。
0643デフォルトの名無しさん
2018/08/02(木) 02:39:35.74ID:vClc7nAi
>>642
自分でゆっくり送ればいいのでは?
0645デフォルトの名無しさん
2018/08/02(木) 08:06:14.31ID:SwjRc7UR
プロセスの優先度は知らんがスレッドの優先度なら
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Thread.html#setPriority-int-

// コードが走ってるスレッドの優先度を変える
Thread.currentThread().setPriority(priority); // 0(MIN_PRIORITY) ~ 10(MAX_PRIORITY)

// 生成したスレッドの優先度を変える
Thread thread = new Thread(runnable);
thread.setPriority(priotrity);
thread.start();
0646デフォルトの名無しさん
2018/08/02(木) 08:10:14.12ID:lJdnLKf/
通常プロセスはOS側で管理するべきと思ってるからあまり考えたことないな

どうしてもやりたいなら通信を管理するプロセスを作れば良い
つまり>>643
0647デフォルトの名無しさん
2018/08/08(水) 20:48:19.34ID:Y8NXA7MO
アンドロイドアプリを作りたいのですが
数か月の間、メンターになってくえれる人を探そうと思ったら
どんなサイトで募集すればいいのでしょうか?
0649デフォルトの名無しさん
2018/08/08(水) 21:38:15.67ID:oyXSOhRB
メンターなんて言葉一般的に使うの?
自己啓発セミナーみたいでいやだなあ
あ、ボクはアナルオナニーインストラクターです
0650デフォルトの名無しさん
2018/08/08(水) 21:40:40.73ID:Y8NXA7MO
基本料金1か月3万円でお願いします
あとはオファーにより別途請求というシステムで
0651デフォルトの名無しさん
2018/08/08(水) 22:33:01.96ID:D/rM6Nrn
マンツーマンで教えるとなると時給の最低ラインは3000円だから
月3万円だと月10時間、1日15分ぐらいだな
0652デフォルトの名無しさん
2018/08/09(木) 10:10:38.81ID:gFPymi4k
専属の人を雇うとなると家庭教師雇うみたいなもんだから高くなるのではないか?
本やネットで調べながらでも何れはできるようになる事についてそこまで投資する必要があるのか?
何らかの期限があるなどして早く覚えないとまずいということか?
0654デフォルトの名無しさん
2018/08/09(木) 16:50:59.46ID:bgFYGL9Q
synchronizedListはイテレータがスレッドセーフじゃないといいますが
for(int i=0;i<list.size();i++)
Element e = list.get(i);

もしsizeの増減が無い場合、こんな書き方はスレッドセーフに全要素にアクセスできますか?
0655デフォルトの名無しさん
2018/08/09(木) 18:59:15.93ID:e0VFp9K8
できません
sizeを確認してからgetするまでに要素数が変化する可能性を排除できていません
0657デフォルトの名無しさん
2018/08/09(木) 19:02:22.63ID:e0VFp9K8
それはサイズが既知でgetしか使ってないのと同じで安全
ていうか要素が変化しないならスレッドセーフではないLinkedListでさえ安全に使えるでしょ
0658デフォルトの名無しさん
2018/08/18(土) 22:43:41.07ID:01sV26bM
https://github.com/OpenHFT/Chronicle-Network
ここに出てくる"Wire"ってどういう意味ですか?
WireTextだの、WireEchoだの。
たぶんプログラミング界隈の用語だと思うんですが
0659デフォルトの名無しさん
2018/08/18(土) 23:10:04.14ID:ddghJ7gy
ネットワークを繋ぐ線の概念なんじゃないかな
知らんけど、それっぽいと思った
0660デフォルトの名無しさん
2018/08/18(土) 23:30:49.48ID:01sV26bM
meta -> meta.write(() -> "tid")

こういう記法は何を意味しますか?
(arg) -> code
みたいなのはラムダ式の説明で出てきますけど、metaはカッコがついていません
0661デフォルトの名無しさん
2018/08/18(土) 23:35:11.85ID:01sV26bM
Wire Message = 電報 ⇒ 通信されるデータ
WireType.TEXTとかWireType.BINARYがあるから、たぶんまさにそれだけの意味。
Network = Wireくらいの意味でこの人は使ってそうです。
0662デフォルトの名無しさん
2018/08/18(土) 23:39:59.88ID:ddghJ7gy
>>660
引数が1つのときはカッコを省略できるんよ
0663デフォルトの名無しさん
2018/08/18(土) 23:58:07.43ID:01sV26bM
数千もの通信を同時処理する高性能なネットワークライブラリを探してるんですが、
何が良いんでしょう?Nettyは内容が難しすぎるんですが・・・。
難しいというか、必要としてるのは単にバイナリを送受信できればいいだけなので、
無駄に高機能過ぎる。
しかし、KeepAliveとか、サーバーが常駐してメッセージを受信してイベント起動、
とかは必要で。ネットワークライブラリの中身なにやってるかあまり詳しくないんですが。

Chronicle-Networkも良く分からない。
// the tid must be unique,
final long tid = tcpChannelHub.nextUniqueTransaction(System.currentTimeMillis());
System.currentTimeMillis()を使ったら、複数クライアントにおいてtidが重複するけど、
それでユニークといっていいのかどうか。
ちょっと情報が少なすぎるのでこれも無理そう。高速らしいんですが

Kryonetは、性能不足ですね。アップデートもされてません。

やはりNettyを頑張るしかないかもしれません。
0664デフォルトの名無しさん
2018/08/19(日) 00:00:33.27ID:bn6Y5y/t
>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コンピューターとの高速な通信ということでしょうか。
0666デフォルトの名無しさん
2018/08/19(日) 10:44:02.78ID:bn6Y5y/t
やっぱり高性能なJavaのネットワーキングライブラリはNettyが有力のようです。
あと、Wire Messageは、たぶん「頭4バイトにINT入れて、次8バイトにLONG入れて」みたいな
バイト配列にデータを敷き詰めてく感じの行為をWireというのだろうと。
0668デフォルトの名無しさん
2018/08/19(日) 15:48:44.36ID:bn6Y5y/t
PooledUnsafeDirectByteBufとは何ですか?
Handlerでbyte[]やByteBufなどクラスを限定できますが、
単にbyte[]を使うことと比べてByteBufやPooledUnsafeDirectByteBufは何かメリットがありますか?
0669デフォルトの名無しさん
2018/08/19(日) 16:16:30.55ID:bn6Y5y/t
どうやら単にbyte[]を送りたい場合でもByteBufを通すのが普通みたいですね
でもそれだとByteBufを作るときもそこからbyte[]を読み取るときもコピー操作があるようで遅そうです
通信に比べればメモリ操作による遅れは微々たるものかもしれませんが
Nettyより高速と謳うライブラリがありますがやはりバッファ周りの問題を指摘してましたが
これですかね
0670デフォルトの名無しさん
2018/08/20(月) 08:34:48.22ID:nWwgLLcF
ソース読んではいないけど、byte[]のWrapperなんじゃないの?
渡されたbyte[]を丸々コピーするような、あなたのような超初心者な実装はしていないと思うよw
そもそも、byte[]で送るといっても、自分でBufferのサイズを決めたり、通信環境を考慮したり、いろいろやらなきゃいけない。
だから、そういった最適化をByteBufのサブクラスたちは提供してくれているのでしょう。
0671デフォルトの名無しさん
2018/08/20(月) 16:30:51.58ID:x31M90y2
こういうコードがあった時、logが呼ばれてもデバッグモードでなければ
意味が無いけど、AnyHeavyMethodは計算されちゃうんでしょうか。
それとも最適化で実行されませんか?

//in some method
log(""+AnyHeavyNoEffectMethod(o));

public void log(String s){
if(isDebugMode())
System.out.println(s);
}
0672デフォルトの名無しさん
2018/08/20(月) 20:31:28.54ID:7cywDiIN
JITコンパイラは副作用がないことをどこまで調べるんだろうね
0673デフォルトの名無しさん
2018/08/20(月) 20:50:34.41ID:DUHqVJSw
>>671
isDebugModeの返す値が定数で、かつそこに登場してる全てのメソッドがインライン展開されれば実行されないんじゃない?
Javaって基本的に大規模アプリケーションに最適化されてて、局所的な速度よりも全体的な安定性やメモリ消費量を重視する傾向があるから、
あまり最適化には期待しないほうがいいよ
0674デフォルトの名無しさん
2018/08/20(月) 22:27:44.88ID:trJY4lAL
AnyHeavyNoEffectMethodが重い処理で、Java8以降ならラムダ式使うんじゃね?


log(() -> "" + AnyHeavyNoEffectMethod(o));


public viod log(Supplier<String> s){
if (isDebugMode())
System.out.println(s.get()); // ここでAnyHeavyNoEffectMethodが実行される
}
0675デフォルトの名無しさん
2018/08/21(火) 08:43:36.63ID:VaNiE4c6
いいね。そっくりそのままDecoratorにもなってるからすっきりする。
0676デフォルトの名無しさん
2018/08/21(火) 09:27:43.13ID:R/vyiArT
それJavaの場合はラムダ内で外のミューダブルな変数を参照できないから微妙
0677デフォルトの名無しさん
2018/08/21(火) 10:05:53.79ID:VaNiE4c6
どーーしても必要なら、観測したい変数をHeapに逃がせばいい(オブジェクトにぶら下げるとか)わけだけど。
Functional信者は怒りMaxだろうな。
0679デフォルトの名無しさん
2018/08/21(火) 12:57:56.56ID:5BiPsrnL
>>678
そう思うだろ?
これでコンパイルエラーなんだよね
int x = 1;
log(() -> x);
x += hoge();
log(() -> x);
0682デフォルトの名無しさん
2018/08/21(火) 17:51:15.05ID:NYseXeYs
>>679
完全に使い方の問題だし、マルチスレッドの問題もあるし。
JavaScriptとかできちゃうけど、それやってどうなってもしらないぞ、と。
0683デフォルトの名無しさん
2018/08/21(火) 17:55:00.54ID:IftEBw66
ログなら普通にある状況だろ
それを使い方の問題というならラムダをログに使うという>>674の発想が間違ってるわ
0684デフォルトの名無しさん
2018/08/21(火) 20:09:37.16ID:NYseXeYs
ないよ。AOPとかDecoratorとか、ラムダが登場する以前からずっとやってきている話。
ラムダはそれをちょっとエレガントにできるようにしただけ。
だから、使い方の問題なんだよ。
0685デフォルトの名無しさん
2018/08/21(火) 22:05:33.53ID:flSi4mUH
>>684はミュータブルな変数を一切ログ出力してないの?
自身を持って無いと言い切れるなら偉そうなこと言っていいぞ
0686デフォルトの名無しさん
2018/08/21(火) 22:09:43.83ID:flSi4mUH
ちなみにログ出力にJavaのラムダが適していないという話であって、ラムダがミューダブルな変数を参照できるべきだなんて誰も言ってないけど
>>684は勘違いしてる
0687674
2018/08/22(水) 22:13:46.15ID:xSbYn5li
簡単な実験コード書いてみたけど最適化されませんね。
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;
}
0688デフォルトの名無しさん
2018/08/22(水) 22:39:39.44ID:xSbYn5li
ラムダ式の方はanyHeavyNoEffectMethodが呼ばれません。
しかし、指摘のようにミュータブルな変数を渡せません。
log()の実装を二種類用意して使い分けていくのが妥当な気がします。
デコレーターパターンで解決できるんですか?
0689デフォルトの名無しさん
2018/08/22(水) 22:48:19.72ID:xSbYn5li
このような頻出のパターンについてJITは最適化すべきだと思います。
たぶん、それが一番妥当な解決策です。
副作用が無い事を確認する機能は、JITに既にありそうなものです。
少なくともある程度の範囲で副作用が無い事を確認できるはずです。

どうでもいいんですがこんなパターンにはJITは最適化を見せました。
for(){
list.add(i);
list.remove(i);//追加したものを即削除する
}
0690デフォルトの名無しさん
2018/08/22(水) 22:51:11.60ID:z4qSfGT7
オーバーロードでいんじゃない?
ログの出力ってきほんStringじゃん
0691デフォルトの名無しさん
2018/08/25(土) 12:01:51.59ID:FONLvq+3
匿名クラスとかでスタック領域の変数を参照できますが、匿名クラスのオブジェクトが破棄されるまでそれらは生存するということですか?

public void method(Observable obs){
Object o = ...;
EventHandler handler = new EventHandler(){
@Override
public void handler(){
System.out.println(o);
}
}
obs.setOnAction(handler);
}
0692デフォルトの名無しさん
2018/08/25(土) 12:14:05.20ID:logoA4dK
>>691
気のせい
実は無名クラスの中に隠しフィールドが生成されてoの値をコピーしている
ちなみにoは暗黙的にfinalになっており、後でoを書き換えようとするとコンパイルエラー
そこまでするならScalaやKotlinやC#みたいに最初からoをヒープに作っちまえよと思わなくもないが、
この中途半端な仕事かJavaクォリティ
0693デフォルトの名無しさん
2018/08/25(土) 13:05:07.70ID:KMExyDFm
>>691
そうなるよ、参照関係を図で表すとこうな感じでしょ
https://light.dotup.org/uploda/light.dotup.org543719.png

オレンジが変数
緑がオブジェクト

メソッドを抜けてローカル変数o, handler, obsがなくなっても
Observable → EventHandler → Object
の参照は消えない

引数に渡してるObservableはメソッドの外で
変数から参照されてるだろうからメソッドを抜けても
破棄されないよ
0694デフォルトの名無しさん
2018/08/25(土) 13:38:45.65ID:QXNuAaPs
>>693
691が気にしてるのはローカル変数o自体の寿命でしょ
実際には無名クラスの外側にある変数oとhandlerの中で参照してる変数oは別の実体だから問題ない、が答えだよ
後者は>>692の通り無名クラスの隠しフィールドであり、インスタンス生成時に値をコピーしている
この仕様だと、後で内側または外側でoの値を書き換えてしまうと辻褄が合わなくなるから、
oを後で書き換えてはいけないという制限が必要なの
0695デフォルトの名無しさん
2018/08/26(日) 18:14:43.90ID:oLy9klNt
ここを見るとRSA系は2048までしかありません。4096等だとRSA鍵による暗号化ができないということですか?
その場合、非標準のライブラリ等で解決できますか?
https://docs.oracle.com/javase/jp/8/docs/api/javax/crypto/Cipher.html
RSA/ECB/PKCS1Padding (1024、2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024、2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024、2048)
0697デフォルトの名無しさん
2018/08/27(月) 09:47:55.19ID:n6GSDZ7+
強度の強い暗号化は輸出制限あるから気を付けてね。
うっかりノートPCにセットしたまま他国へ持って行こうとするとバレた時に大変まずいことになるかも知れない。
0698デフォルトの名無しさん
2018/08/27(月) 17:31:52.62ID:n/TwkHD5
jre1.8の最近のバージョンでデフォルトで強度無制限になったようです。
とはいえ、java8の仕様上、2048までしかサポートする必要は無いようです。
実装によってサポートしているかもしれません。
0699デフォルトの名無しさん
2018/08/27(月) 17:33:10.48ID:n/TwkHD5
このようなコードがあった場合、tは生存しますか?
tはどこからも参照されてないとします。

//in some method
Thread t = new Thread(){...};
t.start();
return;
0700デフォルトの名無しさん
2018/08/27(月) 20:27:36.23ID:QkMU0TtV
>>699
試してみた
https://paiza.io/projects/PxoO2-fLSd_KfpwF5B3prA

結果からわかることは
・メソッドを抜けてもスレッドが終了するわけではない
・スレッドが終了しないならばプロセスは終了しない
・ローカル変数がなくてもスレッドを取得できる

作成したスレッドのオブジェクトはどこかに保持されるみたいね
tは生存します、が答えっす
0701デフォルトの名無しさん
2018/08/27(月) 20:52:27.61ID:l2rfNjjd
変数tを通してアクセスできなくなるだけだな。
0702デフォルトの名無しさん
2018/08/27(月) 21:06:10.81ID:ngNgILlM
threadは、main thread同様garbage collectionのrootとして扱われるそうなので、生存しまする
0703デフォルトの名無しさん
2018/08/28(火) 10:11:17.88ID:nen4cHNL
ただし、daemonthreadは除く。
0704デフォルトの名無しさん
2018/08/29(水) 16:44:32.01ID:V/7UzzKh
Eclipseとかいう汚物にJavaFXを入れたく思いマーケットプレースでjavafxで出てくるe(fx)clipseをインストールしようとしたところ長時間待たされた挙句にエラーが出ました
どうすればいいでしょうか?
0707デフォルトの名無しさん
2018/08/29(水) 18:35:28.97ID:bZ2D0xRL
諦めなさい
0708デフォルトの名無しさん
2018/08/29(水) 20:23:25.71ID:QbSkJrbm
マジで?!廃止されるのswingかと思ってた!
0709デフォルトの名無しさん
2018/08/29(水) 20:35:24.50ID:LfUbbQ2v
厳密には廃止ではなく分離とされてる。
あとJava8が2020年までサポートだから、2020年までは1.8系のjreがあれば使える。
0710デフォルトの名無しさん
2018/08/29(水) 20:44:48.17ID:LfUbbQ2v
そもそもJavaの未来はどうなるのか。JREが有償化される。
OpenJDKはインストーラや自動アップデータが提供されるのか。

JavaFXは単体のライブラリとして独立できるはずだが、誰かがやるのかどうか。
現状だと、何やら面倒なインストール手順が必要なようで、
デスクトップアプリに使われるであろうJavaFXにとって致命的なはず。
mavenとかを使ってアプリに気軽に同梱できるものになればいいのだが。
0711デフォルトの名無しさん
2018/08/29(水) 20:48:44.47ID:zRPnCBM0
JavaFX will continue to be supported in the future by the company Gluon as a downloadable module in addition to the JDK.
0712デフォルトの名無しさん
2018/08/29(水) 20:49:34.59ID:zRPnCBM0
https://gluonhq.com/
0713デフォルトの名無しさん
2018/08/29(水) 20:51:13.97ID:zRPnCBM0
このスレではJavaFXをオヌヌメします
JavaFXをオヌヌメしないのはoracleのコウサクイン
0715デフォルトの名無しさん
2018/08/29(水) 21:01:39.61ID:LfUbbQ2v
downloadable moduleってなんだろうな。

そもそも後方互換性を捨てて高速リリースとか言ってるのが怖くて仕方ない。
開発者が最新版に対応したって、エンドユーザーが最新版を持ってるか分からない。
どのバージョンに向けて作ればいいんだ?
0716デフォルトの名無しさん
2018/08/29(水) 21:02:52.35ID:LfUbbQ2v
いやクロスプラットフォームGUIという概念は重要でしょ。
0717デフォルトの名無しさん
2018/08/29(水) 21:07:16.02ID:LfUbbQ2v
Java8+JavaFXは2022年までサポートされるってかいてあるな
だからもう少し先の話ではあるし、人気のある環境だからそれまでに整備されるだろう。
0718デフォルトの名無しさん
2018/08/29(水) 21:13:19.32ID:LfUbbQ2v
AndroidでもJavaFX動くみたいだし、クロスプラットフォーム性という面で
やはり一番優れてるよJavaは

ちなみにJavaやKotlinのコードをネイティブコードにするコンパイラがあって
iPhoneでもJavaやKotlinのソースコードで動かせるみたいだぞ
ちょっと前までiPhone用のJVMもあったんだけどな
0719デフォルトの名無しさん
2018/08/29(水) 21:16:31.19ID:LfUbbQ2v
https://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
Java8 個人ユーザーの公式アップデート終了日 2020-12

このときまでにOpenJDKやGluonのインストーラが登場していなければ困る。
そしてそれが自動アップデータを搭載していなければ。

ところが自動アップデータ搭載されてても、後方互換性を捨てたアップデートを勝手にされると困るw
困りまくりだ
0720デフォルトの名無しさん
2018/08/29(水) 21:22:30.87ID:LfUbbQ2v
OpenJDKに自動アップデータが提供されたとする。

OpenJDKのアップデートがアプリのアップデートを先行する
→勝手に互換性を捨てたアップデートが来てアプリが動かなくなる。
アプリを最新版に対応してリリースしてもアプリのアップデータは動かないw

アプリのアップデートが先行する
→エンドユーザーのOpenJDKが古くて動作しない

だから、互換性を捨てて高速リリースとかいってるのはほとんど意図的なJava界隈への攻撃。
0721デフォルトの名無しさん
2018/08/29(水) 21:26:20.75ID:LfUbbQ2v
一番欲しいのは、Java8のサポート継続&自動アップデート継続&互換性の維持。
APIを変更するならdeprecatedの期間をある程度とってくれないと無理。
高速リリースがうれしい人が居るのか?
0722デフォルトの名無しさん
2018/08/29(水) 21:41:37.34ID:zRPnCBM0
.netと同じ道を歩んでるようにみえて
microsoftの.netはMITライセンス
0723デフォルトの名無しさん
2018/08/29(水) 21:46:25.67ID:zRPnCBM0
javaはもうおしまい
0724デフォルトの名無しさん
2018/08/29(水) 21:59:08.27ID:LfUbbQ2v
OpenJDKのリンク例外つきGPLは十分だろ。
OpenJDKにおいて、互換性を考慮したアップデートが行われ、自動アップデータが提供されるか。
GPLだから誰でもそのプロジェクトをやれる。
0725デフォルトの名無しさん
2018/08/29(水) 22:00:44.61ID:zRPnCBM0
mitライセンス、bsdライセンス以外は不要
0726デフォルトの名無しさん
2018/08/29(水) 22:02:20.50ID:LfUbbQ2v
>>720の解決法はこうだ

OpenJDKの次期バージョンで現在のアプリが問題を起こすかチェックする。
→問題があるならOpenJDKがアップデートされる前にアプリをアップデートしておく。
そのアプリの修正は、現在のOpenJDKと次のOpenJDK両方で動作する事を確認する。
0727デフォルトの名無しさん
2018/08/29(水) 22:04:08.95ID:zRPnCBM0
javaを棄てれば解決
0728デフォルトの名無しさん
2018/08/29(水) 22:07:18.69ID:LfUbbQ2v
もうJavaで書いたアプリがあるし、Javaに慣れてるから。
それに、.NETに移ったとして、同じ事が起こらない保証があるのか?

実は俺はこの問題に対する根本的解決策を知ってる。うまくいくかは知らないが
それも含めて考えると、やはりJavaを続けようと思える。
0730デフォルトの名無しさん
2018/08/29(水) 22:31:53.32ID:LfUbbQ2v
リリース前でもビルドが公開されてるだろうと思ったけど。
プラットフォーム系でプレビューリリースとかアーリーアクセス的なものを提供して
予め対応してもらおうというアイデアは一般的なもので、オラクルがOpenJDKをサポートするなら
たぶんやるだろう、というか既にやってると思うけど。

JDK 11 Early-Access Builds
http://jdk.java.net/11/
0731デフォルトの名無しさん
2018/08/30(木) 00:12:55.41ID:2PPyJx3c
大前提の認識が間違ってるぞ。
Java11以降においては無償のスタンドアロンなJREは無くなるんだよ。
デスクトップ用途なら開発者自身がアプリにJavaランタイムを組み込んで配布することが推奨される。
そして、OpenJDKはエンドユーザーが自分で個人端末にインストールするようなことを想定したものではない。
開発者がシステムに元々入っているのOpenJDKに依存してよいのは、業務システムなどで
開発者が完全に実行環境のOpenJDKディストリビューションのバージョンや構成を制御できる場合のみだ。
0732デフォルトの名無しさん
2018/08/30(木) 00:46:49.22ID:XYFOdQAI
https://docs.oracle.com/javase/jp/8/docs/technotes/guides/deploy/self-contained-packaging.html#A1307236
>自己完結型アプリケーション・パッケージは、プラットフォーム固有で、ビルドしたシステムと同じシステムにのみ作成できます。

各プラットフォーム向けにビルドしなきゃいけないようだ

>自己完結型アプリケーションには、自動更新の組込みサポートがありません。

アプリのアップデータで簡単にアップデートできるなら問題ではない。

アプリへのJREの組み込み手段がサポートされて、
そこでJavaFXがサポートされるなら、問題無い気がする。
JavaFXはそこでサポートされなきゃ意味が無いし。
0733デフォルトの名無しさん
2018/08/30(木) 00:57:29.40ID:XYFOdQAI
>Java SE 8は、デスクトップ展開を対象とした最後のJava SEリリースです(Java Web StartやスタンドアロンシステムJREなど)。

こういう文言もあるから、Java11以降、OpenJDKでJavaFXみたいな
デスクトップ展開がサポートされるのかどうか。Java8最終版を組み込んで使い続けるか
Gluonに期待するか。
0734デフォルトの名無しさん
2018/08/30(木) 12:01:02.32ID:rv0GkEtx
初心者だけどJavaFXでFTPサーバーとやりとりして追加したり一覧表示してダウンロードしたりするwindows用アプリを作りたいんだ
apache commons netというライブラリを使ってやろうと思うけどviewにファイルを入れるにはどうすれば良いんだろう?
入れた後はjavaからviewをインスタンス化してその中の変数の値(ファイルのパスかな?)を取り出してって感じでなんとかなりそうだけど...
本当に何も分からない状態で、何か良い勉強方法は無いかな?
FTPサーバーについても素人に近いよ
0736デフォルトの名無しさん
2018/08/30(木) 12:59:41.93ID:A5Nytyjy
そういや今はJavaは標準のライブラリでFTP接続してアップロードとか楽にできるクラスあるのかな?
ダウンロードだけはURLクラスでできるの知ってるが。
0737デフォルトの名無しさん
2018/08/30(木) 21:21:59.87ID:XYFOdQAI
viewにファイルを入れるってなに?
TableViewとかTreeViewクラスにアイテムを表示する方法ならチュートリアルあるでしょ
0738デフォルトの名無しさん
2018/08/30(木) 21:23:54.73ID:XYFOdQAI
ああ解読できたかも
要するにGUIにアプリから値を設定、ないし
アプリからGUIに値を設定するにはってことでしょ?
てかGUIってそういう使い方しかないし。
そんなのぐぐればいくらでも出てくるのでは。
https://docs.oracle.com/javase/jp/8/javafx/user-interface-tutorial/table-view.htm
0739デフォルトの名無しさん
2018/08/30(木) 22:12:54.72ID:XYFOdQAI
訂正
人→GUI→アプリ
アプリ→GUI→人
この流れがやりたいってことだとおもわれる
0740デフォルトの名無しさん
2018/08/30(木) 23:38:43.13ID:8yCH8Wm6
>>739
そうそんな感じ
全然イメージ出来ん
どうやって起動させるの?
でも公式ドキュメント見やすそうだねありがとう
0741デフォルトの名無しさん
2018/08/31(金) 00:25:08.31ID:tMQ4ovnC
Project Loomを急ぐんだ!
はやく第一級継続を書かせるんだ。
どうか限定じゃありませんように
0742デフォルトの名無しさん
2018/08/31(金) 01:00:04.22ID:CSMn2BX4
イメージできんってもなあ・・・
GUI部品クラスが提供されてて、何らかの値の設定方法、取得方法があるだけじゃん。
StageやSceneクラスという、GUI全体を意味するクラスも提供されてる。
そこにGUI部品を積み上げてくだけだぞ。
0743デフォルトの名無しさん
2018/08/31(金) 01:09:01.54ID:CSMn2BX4
起動って・・・IDEのプロジェクトアーキテクチャの選択でfx系選べば何もしなくても
GUI立ち上がるでしょ
0744デフォルトの名無しさん
2018/08/31(金) 08:28:19.25ID:XwawDSyV
>>743
webアプリならサーバー起動させてコントローラにある接続用のurlをブラウザに入れれば始めれるじゃん
これはメイン関数なくても行けるんでしょ?起動ボタンあるの?
0745デフォルトの名無しさん
2018/08/31(金) 09:09:35.21ID:G30RIEnt
何かの障害持ちだと理解の過程が通常と違う
彼らにネットは不向きだと思う
0747デフォルトの名無しさん
2018/08/31(金) 10:43:19.14ID:s5ujzdS3
なんというか、Windowsならftpアプリなんかわざわざ作らんでもWebブラウザやエクスプローラでURL指定して開いちゃえばいいような気がするが・・・

あ、とにかく作ってみたいのか。
0748デフォルトの名無しさん
2018/08/31(金) 20:47:37.72ID:jQ6ZKbRR
>>747
ピュアな ftp ならプロトコルも対して難しくもないからネットワークの練習にはちょうどいい
0749デフォルトの名無しさん
2018/09/01(土) 00:04:26.42ID:kDvfeVra
gluonとopenjfxが両方javafx11ビルドしてるけどこれ同じバイナリだろうか?
0751デフォルトの名無しさん
2018/09/01(土) 10:50:10.09ID:8XWt4TWp
>>749
JavaFXはもうJavaの一部ではないのでこのスレのスコープ外だよ
専用スレか公式フォーラムで聞きなさい
0753デフォルトの名無しさん
2018/09/01(土) 13:34:55.66ID:tt1XTLVx
調べてみた

@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は正規表現使ってなかった
0755デフォルトの名無しさん
2018/09/21(金) 23:35:33.58ID:6Tz3djX7
資格に関する質問ってしてもOK?
Oracleの「Java SE 8 Silver」の試験勉強をしようと思うんだけど、参考書に迷ってる
4月からjavaを学習してる程度の人が「徹底攻略 Java SE 8 Silver 問題集」をやるのは難易度高い?

書いてて宣伝っぽい文章になったのはごめん
0758デフォルトの名無しさん
2018/09/27(木) 09:12:53.75ID:rZRe7wqK
有料だから注意しろよ
無料で落とせるやつはちゃんとLAに「評価と開発以外の目的に使うな」と書かれてる
そんな大事なことをダウンロードページに明記してなくてLA読まないと分からないようにしてるのは流石天下のオラクル様ですわ
0761デフォルトの名無しさん
2018/09/29(土) 00:56:04.15ID:kyybLiyB
だいたいダウンロードページにOTN開発者ライセンスに変わったって書いてあるし
0762デフォルトの名無しさん
2018/09/29(土) 18:23:46.96ID:o+PWeM92
JavaでJson読ませるの、どのライブラリが使い勝手いい?
なんかいろいろありすぎて困る
0764デフォルトの名無しさん
2018/10/03(水) 01:25:23.37ID:9ie+5iaR
質問です。
下記のコードで、
https://ideone.com/0RbRo7
出力が0と0の間で2行開いてしまっているのですが、これはなぜでしょうか?
System.out.printlnをSystem.out.printにすると空白は出ないのですが…。
0768764
2018/10/04(木) 00:11:26.33ID:smFA2GkF
>>765
>>766
>>767
返信ありがとうございました。
また質問させて頂くかもしれませんが、よろしければその時もまたお願いします。
0769デフォルトの名無しさん
2018/10/04(木) 11:58:36.08ID:YAdWzVOj
http://acro-engineer.hatenablog.com/entry/2013/10/17/113216
>MyProtocolClientHandler extends ChannelInboundHandlerAdapter

Inbound 受信時に使用される処理
Outbound 送信時に使用される処理
という理解なんだけど、クライアント側のInboundはレスポンスを受信するときに動くということ?
でも送信時のコードが書かれてるようで、分からない。
NettyのInbound, Outboundとは?
0771デフォルトの名無しさん
2018/10/04(木) 14:09:27.89ID:YAdWzVOj
ああわかりました
channelActiveは返信等を受け付けれるような状態になった時に呼び出されて、
それはinbound,outbound関係無いってことですね
パイプラインのハンドラーというより、メッセージ送信の
コントローラー的なものがそこに書かれてるということですね
たまたまハンドラのイベントにそういう処理が書かれてる
0772デフォルトの名無しさん
2018/10/06(土) 11:51:41.21ID:mwcXVcDx
https://netty.io/4.0/api/io/netty/channel/ChannelDuplexHandler.html
> intercept operations and also state updates

この部分どういう意味ですか?intercept operationとは?

DuplexHandlerはパイプライン上でどういう順序で実行されますか?
受信時と送信時で実行して欲しい順番が異なる場合どうすれば?
0774デフォルトの名無しさん
2018/10/08(月) 07:44:21.00ID:fU+WK0rO
bronzeの問題集やっててイライラしてきたんだけど、問題になるようなコードは基本的に書くなってことでいいんですよね?
&&||の右側にインクリメント演算子書いたから場合によって評価されないとかif文の中身1行しかないからカッコ省略したら読みづらくなってるとか
問題として出されるくらいヒューマンエラーを産みかねないってことでOK?
0775デフォルトの名無しさん
2018/10/08(月) 08:33:34.55ID:QRotEnod
読めるようになれってことじゃないの?
>&&||の右側にインクリメント演算子書いたから場合によって評価されない
例えばこれは、
if(a != null && a.get()>1)
こんな行があった時に2つ目の演算でNPE起きない事が保証されると分かれ、ということだろう
書くな、じゃないよ。こんなコードたくさんあるし、こう書かないと冗長になる
0776デフォルトの名無しさん
2018/10/08(月) 08:56:01.75ID:fU+WK0rO
>>775
演算子のほうはちゃんと意味考えて書けよってことですよね?って聞いたつもりだったんです、言葉足らずでした
評価されない場合使って簡潔に書くのはよくあることなんですかね

中身1文ブロックのカッコ省略のメリットがさっぱりわからないんですが見た目がすっきりするだけですかね……?
どこ読んでもあえて推奨されてることがなくて、ブログのコメント欄とかはだいたいケンカになってるんでこれはあまり触れてはいけないアレなんでしょうか
0777デフォルトの名無しさん
2018/10/08(月) 08:58:46.13ID:QRotEnod
まあそれは簡単に言うと
開発時のソースコードはデバッグ出力の行があったりするんだけど
リリース時はデバッグ出力の行を文字列置換で一掃したりする。で、もし
if(...)
debugLog(...);

こういう行があったとして、debugLog(...);を置換で削除したら、エラーになる。
if(...){
debugLog(...);
}
これは置換しても大丈夫。

だから、括弧無しは処理部分を置換する事があるか、による
経験上置換するのはデバッグ系コードだけ
0778デフォルトの名無しさん
2018/10/08(月) 09:13:02.08ID:fU+WK0rO
書き換えるつもりがない1行のはカッコ省略で書くと読みやすい、あとあと置換するdebugLog(…)とかは消したときに空のブロックになるように{}書いとく、ってことでしょうか?
0779デフォルトの名無しさん
2018/10/08(月) 09:51:13.29ID:UTHfaM17
>>777
嘘をついてはいけない
デバッグ出力を置換で消す場合は ";" に置き換えれば良いので
{} の有無など関係ない
0780デフォルトの名無しさん
2018/10/08(月) 09:55:23.16ID:QRotEnod
>>779
それは気付いてなかったw

じゃあ括弧無しのデメリットは特に思いつかない
0782デフォルトの名無しさん
2018/10/08(月) 11:34:11.42ID:H/mp1NsO
>>774-776
&&・||の右側に、副作用があったら危険!
副作用とは、何かの状態を変えること

ぱっと見ただけでは、副作用が実行されるかされないのかが、わかりにくい。
右側に、副作用が無ければよいけど

if-else 文なんかより可読性が低いから、誤解しやすい

すべての言語で、言われている。
MISRA-C とか、C言語のルールでも、決められている
0783デフォルトの名無しさん
2018/10/08(月) 12:02:59.41ID:QRotEnod
副作用があるかもしれないから、という理由なら条件分岐関係無くない?
if(a == null)
return;
if(a.get()<=1)
return;
これでget()呼ぶのも副作用あるかもしれないよね?
0784デフォルトの名無しさん
2018/10/08(月) 12:20:29.15ID:tKqgyITq
>>783
別スレッドによって a が null にされてしまう可能性はあるな。だいたいの場合はそういうスレッドがないか、
またはあると分かっているならロックしてからアクセスするように作るから問題にならないんだろうけど。
0785デフォルトの名無しさん
2018/10/08(月) 12:26:37.42ID:QRotEnod
ん?こういう理解だけど。参照が渡されてるだけだから
別スレッドが参照を破棄しても関係ないぞ

func1(Object a){
if(a == null)
return;
a.get();//絶対にNPEが起きないマルチスレッド無関係
}
func2(Object a){
a = null;
}
0786デフォルトの名無しさん
2018/10/08(月) 12:29:19.11ID:r0dViXxq
そもそも式の中で副作用のある関数を呼び出すのは危険
&&や||は評価順序が決まってるからまだマシな方でそれ以外の演算子だと評価順序もどうなるかわからんし
0787デフォルトの名無しさん
2018/10/08(月) 12:32:49.91ID:QRotEnod
でも副作用がある関数はset,write,update,createとか大体それっぽい名前ついてるし
分かるでしょ?
というか情報処理はCRUDだからcreate,update,delete的な名前が必ずついてる

副作用を広くとらえればログ出力も副作用だけど、そういうのは問題無い
getは副作用無しか問題無い副作用のみ、CRUDのRに相当するものだから

だからコーディング規約を作るなら、CRUDを意識させるようなものであるべきで、
真理式でメソッドを呼び出すなとかいうわけわからん規約を作るべきではない
CRUDのうちRのみ呼び出していい、とすべき
0788デフォルトの名無しさん
2018/10/08(月) 12:37:02.60ID:QRotEnod
ぶっちゃけCUDでも呼び出していい
結局、意味を捉えて間違えないように書けということでしかない
コーディング規約をどういじくってもそこから逃げれるわけじゃない
0789デフォルトの名無しさん
2018/10/08(月) 12:43:00.19ID:wqzMNkqt
if (a == 0 || b++ < 1) {
}
こういう書き方をすると一見bが常にインクリメントされるように誤解されやすいからやめとけよって言ってるだけでしょ。
0790デフォルトの名無しさん
2018/10/08(月) 12:48:22.90ID:QRotEnod
真理式に複数の演算があって、かつ一部に副作用があるとまずい、ってことか
0791デフォルトの名無しさん
2018/10/08(月) 13:19:09.60ID:H/mp1NsO
副作用・副作用完了点
評価順序・マクロ

MISRA-C でも、こういう間違いやすい所の、ルールは厳しい
0792デフォルトの名無しさん
2018/10/08(月) 14:53:07.06ID:tKqgyITq
>>785
それならないな。

残るは get() して 1 以下なのを検査した直後に別スレッドによって a の状態が変化して get() が返す値が変わるとかかな。
(そんなの想定の範囲内なら問題ないが)。
0793デフォルトの名無しさん
2018/10/10(水) 01:35:05.39ID:gneY7b7h
adopt openjdkのjdk11リリースされたじゃん。
ttps://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot

LTSだぞ。
ttps://adoptopenjdk.net/support.html?variant=openjdk11&jvmVariant=hotspot
0795デフォルトの名無しさん
2018/10/12(金) 08:34:35.39ID:kCbZI2NA
クライアントJREは廃止された
今現在、要JREとして世に出ているアプリをエンドユーザーが実行する公式な方法は存在しない(自己責任で開発環境を入れるしかない)
今後のクライアントサイドJavaアプリの唯一の配布方法は、JDKに含まれるコマンドラインツールを使用して
プラットフォーム毎に実行環境とアプリを同梱した実行可能なパッケージを作ることである
クライアントサイドに関しては、もはやJavaはバイナリ互換ではない
OracleはクライアントサイドJavaを段階的に廃止しようとしており、新規には決して使ってはならない
0796デフォルトの名無しさん
2018/10/12(金) 09:00:21.36ID:U0bHLz7N
>>793
当てにならんよこんなの
こいつらはただのビルド屋で、自分達でソースに手を入れる体制はない
次のバージョンのOpenJDKがリリースされた後もOpenJDK公式リポジトリの旧バージョンのソースに対してLTS向けのパッチが提供されるかどうかは、
オラクル様の温情次第
0798デフォルトの名無しさん
2018/10/22(月) 16:04:20.83ID:1yTQ4g+U
何時の間にかvar使えるようになってたな
0799デフォルトの名無しさん
2018/10/22(月) 23:21:36.65ID:KYkLOyp1
いないいないvar
0800デフォルトの名無しさん
2018/10/22(月) 23:32:16.95ID:sd28W5TQ
Javaに型推論が無いことをディスられると、意識高い系Javaerさん達は
ローカル変数の型もinterfaceにするべきだからそんなもん要らんと上から目線で反論してたけど
梯子外されちゃって哀れだな
0801デフォルトの名無しさん
2018/10/23(火) 03:01:58.72ID:IDcT8U1C
これ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));
}
0802デフォルトの名無しさん
2018/10/23(火) 03:05:36.61ID:IDcT8U1C
悪く言われるけどクライアントサイドについてJRE同梱は良いんじゃない?
もはやファイルサイズは小さな問題だし、JREのバージョン違いでの誤作動を減らせる。
クライアントサイドJavaがそれで悪くなったと思わないけどな、俺は
JavaFXが外されたのは悪くなったと思うけど、でもどうせ同梱する作業するときに入れるんだし
妥当な変化じゃないの?
0803デフォルトの名無しさん
2018/10/23(火) 05:51:34.87ID:6lDUuVuA
>>801
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;
 }
}

変数に対する代入と
オブジェクトの状態を変えることとは
異なる操作なんやで
0805デフォルトの名無しさん
2018/10/23(火) 07:55:16.19ID:ukFWTvzy
>>801
Integerをインクリメントした瞬間に新しくIntegerインスタンスが生成されるからだな

詳しくはオートボクシング、インクリメントとかでググるといい
0810デフォルトの名無しさん
2018/10/25(木) 05:33:58.31ID:KXlarInO
Object#equals()
public boolean equals(Object obj) {
return (this == obj);
}
なんでreturn this == obj;じゃなく括弧で囲ってるの?
0811デフォルトの名無しさん
2018/10/25(木) 09:55:01.19ID:hw/Q19JU
囲ってみたい気分だったのだろう
0812デフォルトの名無しさん
2018/10/25(木) 11:06:47.39ID:jwOWZyFv
return文に記述された式が複雑なときは括弧で括ったほうがmore readableだから推奨してる人のほうが多いように思うけど、
this == objが複雑かどうかは微妙だね。

でも自分なら括弧つけるかな。
理由は、括弧でくくることで、等式が値を返す数式として使われていることを明示できるから。
0813デフォルトの名無しさん
2018/10/25(木) 11:34:47.74ID:r31i+JfI
Javaの最黎期に書かれたものだろうから、コードスタイルが今の基準からすれば変でもおかしくない
今では一般的には括弧はつけないのが主流だね
0815デフォルトの名無しさん
2018/10/25(木) 14:00:36.81ID:oNBD1gf9
計算がよくわからん時は、まず括弧で囲えって、
今でも教える人がいるからな
0817デフォルトの名無しさん
2018/10/25(木) 18:46:51.45ID:zmVgc+jl
>>815
演算子の優先順位の話なら不要だと思ってもあえてつけたままにすることはあるな
+ と * とかならいいけどビット演算子とか言語によって違う奴とかもあるしね
0818デフォルトの名無しさん
2018/10/27(土) 15:01:56.02ID:1x6RXWmG
javaでaccessdbと接続するようなソフト作ってみたいんですが
フレームワークって必要ですか
ちょっとフレームワーク自体よくわかってないです。
規模は社内で5人くらいで使用します。
0819デフォルトの名無しさん
2018/10/27(土) 19:11:03.52ID:RbshV9yz
検索すれば出てくるけど
ハマることが多そうだからオススメしない
Javaが要件なのかAccessが要件なのかわからんが
0820デフォルトの名無しさん
2018/10/27(土) 19:15:14.94ID:LS+3DLFQ
>>812
Webで避けて通れないJavaScriptのせいとかもあるな。
JavaScriptのセミコロン省略可能はいまだに嵌る。
0822デフォルトの名無しさん
2018/10/27(土) 22:29:57.54ID:229rJcCX
>>802
Write once,Run anywhere

配布しようと思ったら環境に応じたJRE添付してやらないといけないんだよね?
根本理念に喧嘩売ってる気がする
0823デフォルトの名無しさん
2018/10/28(日) 03:09:10.51ID:7tRDHbkL
>>822
バイナリ互換じゃなくなるけどソースコード互換ではあるので・・・

JavaでGUIアプリ作ってネットで配布する場合、エンドユーザーの環境に依存するの辛いでしょ
むしろJRE同梱したい、と思うのが普通だよ

JRE同梱によるファイルサイズ増加はもはや問題にならないし
どうせJRE同梱作業するなら、その時にJavaFX入れれば良いので、分離されたのも妥当な気がするし
むしろクライアントサイドで進歩してると言っても良いのでは
0824デフォルトの名無しさん
2018/10/28(日) 03:59:58.74ID:WcIuuSyz
>JavaでGUIアプリ作ってネットで配布する場合、エンドユーザーの環境に依存するの辛いでしょ
JRE同梱だと回避できて、JARだけだとダメな問題ってどういうのがあるん?
実際にクライアントの環境が異なってたらどうやって提供しようが辛さは一緒におもえる

だいたいJRE同梱なんかされたら何仕込まれてもわからん
サンドボックスのしっかりした仕組みがあるわけじゃなし
そもそもWindowsとかOS側が信用できない

共通のJavaだから信頼感あったのに
0827デフォルトの名無しさん
2018/10/28(日) 04:26:41.29ID:7tRDHbkL
>>824
何言ってるか良く分からんが、JRE同梱すればJREのバージョン違いによる問題が無くなるだろう。
いちいちJREをインストールしてもらう手間も無くなる。
例えば一部のJREはJavaFXを同梱しているが、一部はそうではない。

何仕込まれても、ってのは良く分からんが
スタンドアロンアプリでもセキュリティマネージャーは動くはず
0828デフォルトの名無しさん
2018/10/28(日) 04:32:23.62ID:7tRDHbkL
確かにこれまでと比べると、オラクルのサイトからJRE落としてそれで動かしてたのに比べると
アプリ毎にJRE同梱されちゃうとおかしなネイティブ実行ファイルが同梱されてないか、という問題はある

しかし同梱されたプラットフォーム固有の実行ファイルはハッシュ値とかで適切なファイルかを照合できるはず
あとそもそもバイトコード部分でも相当な処理が可能だから、さほどセキュリティリスクが変わると思わない

ネットからプログラムを落とすなら、オープンソースか信頼できる大御所か
これまでと変わらないのでは
0830デフォルトの名無しさん
2018/10/28(日) 04:36:35.55ID:WcIuuSyz
問題はJREのバージョンか
たしかに多少の問題はあるが

JRE同梱必須にしたらJavaの目指していた未来と可能性そのものを切り捨てることになる
そうできるってのとそうしなきゃいけないってのはえらい違い
0831デフォルトの名無しさん
2018/10/28(日) 04:42:15.05ID:7tRDHbkL
JREを同梱しないと、10年経ったら動かなくなってると思う

クライアントサイドはJRE同梱で作れと強制する事は、そんな悪い事じゃないと思う
そうしないとJavaがバージョンアップしづらい問題もあるから、オラクルはそうしたいんだろう
0832デフォルトの名無しさん
2018/10/28(日) 04:46:39.09ID:vBzuIBdi
元々Write once,Test anywhere

って失望されてたじゃ無いか。。。
HTML5も同じだけど、理想と現実は遥かに遠い隔たりがある。
0833デフォルトの名無しさん
2018/10/28(日) 04:48:23.37ID:GS4HIDpq
スタティックリンクの肥大した実行ファイルと一緒だよね
Write Onceで全プラットフォームで動いたら開発者としては理想じゃないかな
0834デフォルトの名無しさん
2018/10/28(日) 04:49:04.83ID:7tRDHbkL
オラクルはJavaを高速バージョンアップしたいみたいな事も言ってるが、
一連の話は整合性がある
サーバーサイドはエンジニアが管理しててJRE固定できる、
クライアントサイドはJRE同梱。
現状だとJavaから古いAPIを削除したら多くのアプリが動かなくなるから、
移行期間を作ってそのようなアプリが減るのを待つ。
そうしないとJavaに未来が無いという判断は、理解できなくない。
0836デフォルトの名無しさん
2018/10/28(日) 05:47:19.26ID:D9Gt7gmT
改変されたJREを同梱されたら終わりではないか?
0837デフォルトの名無しさん
2018/10/28(日) 05:51:56.29ID:7tRDHbkL
だから、同梱されたファイルのハッシュ値調べればわかるし、
アンチウイルスだって有名な実行ファイルについてハッシュ値を知識として持っておくべき。
オープンソースは誰かが検証すべき。
で、もともとバイトコード部分でも相当な事ができるからセキュリティリスクは変化してない。
0838デフォルトの名無しさん
2018/10/28(日) 14:47:49.66ID:Ii5bdv+P
クラス変数にもvar使わせてほしいよな
無名クラスにリフレクションで値を代入するフレームワークとかでてきそうだし

class Hoge {
public var xyz = new Object() { int x, y, x };
}
0839デフォルトの名無しさん
2018/10/28(日) 23:50:32.90ID:vn58j50+
それをやると型を特定するために延々先を辿らなきゃいけなくなるんだ…
0840デフォルトの名無しさん
2018/10/28(日) 23:52:24.19ID:qcVVu7B5
Class#forNameで動的リンクするときjlinkとかは依存するクラス検出できないから
結局手動で全部依存関係調べるかfull jre使うかの二択になる。

>>838
互換性が保証できなくなるからやらないだろ。
実行時の型と推論された型は違うから。
0841デフォルトの名無しさん
2018/10/29(月) 00:01:40.82ID:k1+zlMbU
というかあれだぞ。
javapackagerなくなったからjava11ではjre同梱したパッケージ作れないし、
なくなったのはpublic jreだけでjreのビルド自体はadopt openjdkがやってるからjre自体はあるぞ。
0842デフォルトの名無しさん
2018/10/29(月) 00:06:53.79ID:RWf1bRTo
>>838
コンパイラの仕組み上困難
Javaコンパイラはまず、メンバのシグネチャだけを解析してクラスごとにメンバのお品書きを作る
そして、それが一通り終わった後に各メソッド本体やフィールド代入元の式を解析する
ところがフィールドの型にvarを許してしまうと、お品書きを作る段階でフィールド代入元の式を解析しなきゃいけなくなる
それによりコンパイラのパスが増えてしまうから、コンパイル速度が大きく低下する
0843デフォルトの名無しさん
2018/10/29(月) 01:24:28.42ID:Cn2rCt1V
>>842
クラスにvar持てるHaxeのコンパイル遅いと感じたこと無いけど
Scalaとかいう言語でものすごく遅くなったという話は聞く
0844デフォルトの名無しさん
2018/10/29(月) 02:54:18.59ID:doCXynSY
>>841
Java 11でクライアントサイドはどういう扱いになってるの?
0845デフォルトの名無しさん
2018/10/29(月) 03:02:24.77ID:doCXynSY
新しいパッケージングツールの要件はJavaFX未対応とされている
http://openjdk.java.net/jeps/343

JavaFX由来のパッケージングツールが削除された

じゃあ、JavaFXアプリをエンドユーザーに配布したい場合、どうするの?
現在見つかる情報は、非JavaFXの自己完結型パッケージャ、
JavaFXのビルド方法だけで、JavaFXの自己完結型パッケージャが行方不明なんだけど
0847デフォルトの名無しさん
2018/10/29(月) 22:22:22.37ID:Cn2rCt1V
アウト、セーフ、よよいのよい
0848デフォルトの名無しさん
2018/10/29(月) 23:23:48.16ID:KWB0XUD6
>>844
Java Client Roadmap Update
ttps://www.oracle.com/technetwork/java/javase/javaclientroadmapupdate2018mar-4414431.pdf

>>845
jep343がjavafx対応しないんだからないよ。
でも、javafxはただのライブラリなんだからjep343でほかと同じ扱いでしょ。
0849デフォルトの名無しさん
2018/10/30(火) 14:22:42.63ID:ySliw7Bj
public synchronized void method1(){}

こういうメソッドレベルでsynchronizedした場合、
synchronized(this){}ということですか?
つまり他のところでsynchronized(this)が書かれていたら、どちらかが待機になるんでしょうか
0850デフォルトの名無しさん
2018/10/30(火) 15:22:20.46ID:E+8/TrgC
>>849
その通り
thisをロックするのはパフォーマンスの低下やデッドロックの原因になるため、現代では一般には悪手とされている
synchronizedがデフォルトでthisをロックするのはJavaがまだオモチャでカジュアルに排他制御してた時代の名残で、
ちゃんと作るなら排他制御には private メンバを使って外に漏らさないようにした方が安全
0851デフォルトの名無しさん
2018/10/31(水) 12:34:18.73ID:6PFXXFSS
thisをロックするのとロック専用オブジェクトをロックするのは
性能の違いがあるんですか?
0852デフォルトの名無しさん
2018/10/31(水) 14:41:22.75ID:3SYFbLW8
>>851
thisはクラス外からも当然見えているわけで、他のクラスも同じオブジェクトを同時にロックしている可能性がある
どえせ内部的に同期してるんなら他のクラスが同時にアクセスしてくることは何の問題もないはずで、これは完全に無駄なブロックだ
クラス外から見えるオブジェクトをロックするのはパフォーマンスだけではなくてデッドロックの可能性を高める非常に悪い行為
0853デフォルトの名無しさん
2018/10/31(水) 15:22:21.60ID:6PFXXFSS
デッドロックの可能性は分かるんですが、
その性能の劣化というのは、クラス外でたまたまロックに使われていた場合、
待機時間が生じるから、ということですか?
待機時間以外に構造的に複雑なオブジェクトをロックすることでの性能劣化はありえますか?
0854デフォルトの名無しさん
2018/10/31(水) 15:45:06.31ID:3SYFbLW8
>>853
それはない
ロックはオブジェクトヘッダにロック中であることを示す情報を書き込むだけ
0857デフォルトの名無しさん
2018/10/31(水) 17:20:43.08ID:6PFXXFSS
専用オブジェクトでロックしても結局プログラマーが入念にチェックする以外
無い気がするんですが合ってますか?
よく言われてるようなロック順序云々では解決しない気がするんですが
0858デフォルトの名無しさん
2018/10/31(水) 17:23:06.92ID:xpjrbgPR
Javaはいつかなくなるんですか
0861デフォルトの名無しさん
2018/10/31(水) 19:30:32.81ID:umCB7ism
俺のディスクの上で生き残る
0862デフォルトの名無しさん
2018/10/31(水) 19:48:34.38ID:umCB7ism
デッドロックと言えば、サーバをまたいだロックを掛けててデッドロックになった時は原因究明が大変だったなあ。
0863デフォルトの名無しさん
2018/10/31(水) 20:18:06.23ID:YzLC1QbG
>>857
外に漏らさなければ入念にチェックする範囲がクラス内だけに留まるだろ
外から見えるオブジェクトならそれを触ってる可能性のある範囲全てをチェックしなきゃいけない
0864デフォルトの名無しさん
2018/10/31(水) 21:04:23.41ID:6PFXXFSS
>>863
クラスA#method1() method3呼び出し
クラスA#method2()
クラスB#method3() method2呼び出し

この状況でmethod1,3を異なるスレッドが呼び出したらデッドロックになりうるのでは?
クラスA,Bがそれぞれ専用のロックオブジェクトを持っていて
method1,2,3の内部でロックオブジェクトでロックしているとして
0865デフォルトの名無しさん
2018/10/31(水) 21:13:55.51ID:umCB7ism
そういやJavaVMって実行時にデッドロックを見つけ出す機能はないのかな?
OSのファイルロックだと見つけてくれたりするよな。NFS絡むと無理だけど。
(あ、でも2プロセスでロック掛け合った場合だけかな?)
0866デフォルトの名無しさん
2018/10/31(水) 21:30:17.03ID:6PFXXFSS
デッドロックを通知する仕組みはあるようです。JConsole

安全なsynchronizedというものは、そのメソッドがどこから呼び出されているか、
どれを呼び出しているかというような依存関係で決まって、
単純な記述方法で安全性を確保する事はできないのではと思いました。
どのオブジェクトをロックしてもこの問題は残ります。
https://www.jpcert.or.jp/java-rules/lck07-j.html
これなんかもそうですが、ロック順序だけで解決できると考えてしまっていますが、
synchronizedブロック内のロジックが他のメソッドを呼び出している場合、
まだデッドロックが発生する可能性があると思います。
派生していくメソッド呼び出しのどこかにsynchronizedブロックがあれば。
もちろん、多くの場合、プログラムは様々なメソッドを呼び出します。
>>857はこの理解で正しいかという意味です
0868デフォルトの名無しさん
2018/10/31(水) 22:59:47.53ID:GrkkoIKB
>>864のケースで仮にAがthisをロックしていたとしたら、B#method3がA#method2を呼ばずともB#method3内で直接または間接的にAのロックを試みただけでデッドロックするだろう。
privateなロックオブジェクトを用いたからといってデッドロックの可能性はゼロにはならないが、thisを使うのに比べれば確実に可能性は低くなる。
あえてリスクの大きくパフォーマンスの低下する方を選択する積極的な理由がない。
0869デフォルトの名無しさん
2018/10/31(水) 23:05:48.35ID:VI6I+9K/
>>866
何を言いたいのか理解できないが、どこの誰がどんなタイミングでロックを取りに来ようとも、ロックの順番さえ守ってれば絶対にデッドロックは起こらないよ。
0870デフォルトの名無しさん
2018/10/31(水) 23:43:17.95ID:QZT9zuHU
DB などほとんどのアプリでは、デッドロックでタイムアウトする。
絶対に回避できない

ロックする順番は、2プロセスの場合、
プロセスAがX, Y、
プロセスBがY, X

3プロセスの場合、
プロセスAがX, Y、
プロセスBがY, Z、
プロセスCがZ, X
0872デフォルトの名無しさん
2018/11/01(木) 06:39:30.81ID:MRwfHAbj
>>870
バカにロックを使わせるな
って言う見本

せめて初歩の初歩ぐらい理解してからレスしろよ w
0873デフォルトの名無しさん
2018/11/01(木) 07:11:11.17ID:m171VN/W
>>869
ロックの順番を守る事ができないということです
ブロック内にメソッド呼び出しがあることは普通です
0874デフォルトの名無しさん
2018/11/01(木) 07:11:48.43ID:m171VN/W
>>868
>どのオブジェクトをロックしてもこの問題は残ります。
0875デフォルトの名無しさん
2018/11/01(木) 07:13:39.94ID:m171VN/W
現在している話は、普通のプログラムにおいてロックの順番を守る妥当な方法は存在しないという話です。
synchronizedブロック内でメソッド呼び出しがあった時点でそうなります。
それに対してロックの順番を守ればいいとかthisをロックしろとか言い続けているのは話が分かっていません。
0876デフォルトの名無しさん
2018/11/01(木) 07:17:18.61ID:m171VN/W
もう少し分かり易い説明を思いつきました。
ここにある問題は、synchronizedブロックで一旦ロック順序を守ったとしても、
そのブロック内から呼び出されているメソッド及びそこから派生的に呼び出されている全てのメソッドにおいて
synchronziedブロックを使う場合デッドロックが生じうるという問題で、
リファクタリング等において恒久的に懸念が残り続けるという問題です。
これは一時ロック順序を守ったコードを書いても解決しません。
0877デフォルトの名無しさん
2018/11/01(木) 07:20:14.51ID:m171VN/W
すみません、経験上凡人レベルの人に話しても理解されなくて、辛い思いをするだけです。
話を終わります。
0878デフォルトの名無しさん
2018/11/01(木) 07:36:25.75ID:PBz6MbCm
そうや。情報処理資格のテキストに書いてある。
楽観的とか、ああいうやつ

何も知らない奴が、ギャアギャア言ってるだけ
0880デフォルトの名無しさん
2018/11/01(木) 08:23:01.98ID:Tn1c1okn
例題とかじゃなくて、どういう時にロックが必要になるか考えて実際にやってみたらいいんじゃないか
そんな複雑なsynchronizedの使い方をしたことはしないだろう
0881デフォルトの名無しさん
2018/11/01(木) 09:20:12.40ID:AYHv18S/
>すみません、経験上凡人レベルの人に話しても理解されなくて、辛い思いをするだけです。
世間は俺のことを分かってくれない(馬鹿のFAQ)w
0882デフォルトの名無しさん
2018/11/01(木) 09:30:29.97ID:KWvf1ga0
ID:m171VN/Wは天才すぎる故に凡人レベルの嫉妬を買ってしまった
0883デフォルトの名無しさん
2018/11/01(木) 09:40:00.51ID:mQsUQM4b
いや本当。凡人レベルの人には話が通じませんよね。


という具合にみんなして同調しておけばいいのに。
0884デフォルトの名無しさん
2018/11/01(木) 09:41:09.33ID:VmLiOLMi
凡人にも理解出来る様に説明出来る能力を持ってるのが、天才の条件だな
説明出来ない人は紙一重の方
0885デフォルトの名無しさん
2018/11/01(木) 09:47:33.79ID:DtT8Cv0d
まあ責任と前提の問題だな
正常な頭してたらクラスAとクラスBが相互に密結合するような設計をすることはありえないから、
似た状況が起こりうるのはBがAに自身を登録してAがBをinterface経由で「コールバック」するようなパターンだろう
その場合、BのメソッドがAのコンテキストから呼び出されることはBを作る側は当然知っているはずで、Aを更に別のスレッドから呼ぶような基地外的行為をしないという人間としての最低限度の責任はB側にある
そしてA側はそのようなリスクのある拡張ポイントをなるべく作るべきではないし、やむを得ないときはドキュメントに明記するべき
0886デフォルトの名無しさん
2018/11/01(木) 10:30:23.17ID:Tn1c1okn
あれだ
スレッドを知った初心者が無駄に使いたくなってる状態に近いんじゃないか
0888デフォルトの名無しさん
2018/11/01(木) 11:38:29.67ID:mQsUQM4b
>>887
ありがとう。そんなスレがあったとは。正に俺のために作られたようなスレだな。

と、サラッと書けるくらいにならんといかんよ。現実がどうであれ。w
0890デフォルトの名無しさん
2018/11/01(木) 15:10:14.12ID:Nl3jEz8g
javaの資格のsilverやgoldはどの程度の実力で受かりますか?
デザインパターンやリファクタリングをちゃんと理解しているレベルなら余裕で受かる?
0891デフォルトの名無しさん
2018/11/01(木) 15:35:43.13ID:mUSj63Sn
>>890
シルバーはブロンズと変わらん
ゴールドはライブラリの使い方知ってればおけ
日付の計算とかスレッドとかコレクション
0892デフォルトの名無しさん
2018/11/01(木) 15:58:36.20ID:Nl3jEz8g
>>891
ゴールドもその程度で受かるのですか?
楽勝ですね。
じゃ逆にデザインパターンやリファクタリングをあまり理解していなくても受かるということ?
0893デフォルトの名無しさん
2018/11/01(木) 16:03:52.20ID:OxvwXsOa
受けようと思ったことすらないのでわからない。
0894デフォルトの名無しさん
2018/11/01(木) 16:11:52.48ID:Nl3jEz8g
職歴にプログラミングがないのでしかたなく資格でもアピールする必要があるのですが
Java資格はGoldを取るとして
あとなにがあったほうがよいでしょうか?
データベース関連やUML関連やネットワーク関連の資格ですか?具体的にはなにが印象いいでしょうか?
0895デフォルトの名無しさん
2018/11/01(木) 16:12:24.17ID:Nl3jEz8g
デザインパターン関連の資格ってないのかな?
0897デフォルトの名無しさん
2018/11/01(木) 16:33:52.56ID:Nl3jEz8g
デスペとデスペですか。
同じものなのになぜ2回も言うのですか。
0898デフォルトの名無しさん
2018/11/01(木) 16:41:11.79ID:RfEd9OxR
大事なことなので
0899デフォルトの名無しさん
2018/11/01(木) 17:12:47.17ID:Nl3jEz8g
そうですか。

なにか忘れてそうなのですが
プログラミングあるいは関連分野で、あったほうがいい資格はありませんか?
0900デフォルトの名無しさん
2018/11/01(木) 18:05:14.35ID:OxvwXsOa
わからない。資格何もなしで何十年も働いちゃったもので。
一時期は学校でC言語教えてたりもしたが、資格はなかった。
あ、一太郎も教えてたことあったよ。もちろん資格なしで。
0901デフォルトの名無しさん
2018/11/01(木) 19:13:26.95ID:Nl3jEz8g
>>900
無免許ですか。逮捕しますよw
一太郎は日本用のWordだと思うけどなんでそんなものが存在したの?
0902デフォルトの名無しさん
2018/11/01(木) 19:15:26.25ID:1Z/ZXoar
まあ実務をやる上では資格は特に必要ではない
ただ採用する立場だと資格ない奴とある奴ならある奴を取る
0904デフォルトの名無しさん
2018/11/01(木) 19:39:49.82ID:OxvwXsOa
>>901
なんでって、MS-DOS時代のWORDは漢字扱えなかったからじゃないか?
0905デフォルトの名無しさん
2018/11/01(木) 23:44:32.35ID:kQnTnj4P
ブロンズは持っても意味ないしシルバーもゴールドの受験資格みたいなもんだぞ。
そんで中身の言語部分はJVMSもJLSも一切読まなくても答えられる程度でどちらかと言うと
ありふれたライブラリの宣伝兼再確認みたいな内容。
0907デフォルトの名無しさん
2018/11/02(金) 16:44:03.61ID:TVanRjUQ
もしかしなくてもsilverとかより基本情報技術者取ったほうがいいんでしょうか
0908デフォルトの名無しさん
2018/11/02(金) 16:53:15.88ID:3EaYIZ29
当然
Javaの重箱の隅に付いてる食べカスの色知ってる奴よりIPアドレスの計算できる奴の方が遥かに役に立つ
0909デフォルトの名無しさん
2018/11/02(金) 17:17:06.84ID:0QIYfvOa
IPアドレスの計算って?
何か計算必要か?
0910デフォルトの名無しさん
2018/11/02(金) 21:03:28.28ID:mJ2e4zOQ
インターネットキングならIPアドレスの計算くらい朝飯前だよ
0911デフォルトの名無しさん
2018/11/02(金) 22:48:40.06ID:ejOlj3tt
サブネットマスクとかの話ちゃうの
0912デフォルトの名無しさん
2018/11/03(土) 00:34:57.85ID:8dUCHJOu
世の中に無駄なものなんかないよ
ジャヴァの資格もIPアドレスの計算も全て社会の役に立ってる
0913デフォルトの名無しさん
2018/11/03(土) 18:14:19.75ID:b5iwDuZ8
java11, 12にはくだらない機能しか入らないのか
0914デフォルトの名無しさん
2018/11/04(日) 11:32:05.48ID:hQdPSgHl
ブリッジパターンの応用手順のブログみたい。パッケージを開発する時を前提にしているね。
https://blogs.yahoo.co.jp/kamyu_2010/35480077.html
0915デフォルトの名無しさん
2018/11/06(火) 00:08:12.73ID:GjqHOKec
for文ブロックの後にループカウンタ変数の値でif文を書きたい
でもループカウンタ変数のスコープの問題で使えない

for文実行前にカウンタ変数用意するのは悔しいし誤動作を招きそうな気がするのでやりたくない
for文の中にif文を書いちゃえばいいんだけど毎回実行されるのは無駄で気持ちが悪いしそもそも本来やりたいことと違う

これはどう解決すれば良いんでしょうか、初歩的ですいません……
0916デフォルトの名無しさん
2018/11/06(火) 00:14:58.15ID:ShoHBAGo
>>915
forループに入る前にループカウンタとは別の変数を用意して、ループの最後にカウンタの値をその変数にコピーするようにしよう
そうすればループカウンタをfor文の外で宣言しなくて済むし悔しくない
0917デフォルトの名無しさん
2018/11/06(火) 00:22:51.13ID:GjqHOKec
そもそもループカウンタを前に宣言はできませんでした(今までそんなんやろうと思わなかった……)
>>916
代入ならif評価よりは速そうですね、ありがとうございます
0918デフォルトの名無しさん
2018/11/06(火) 01:56:42.62ID:BD76rR44
>>915
それってループしている最中に if で何らかの条件により break するってことだよね?
それならその if ブロックの中で別の変数に代入すれば良い。

int j = -1;
for (int i = 0; i < max; i++) {
 if (f(i)) {
  j = i;
  break;
 }
}
if (j >= 0) {
...
}

もし上記のように途中でbreakして抜けるのでないなら max の値そのまま使えば良い。
0920デフォルトの名無しさん
2018/11/06(火) 11:38:48.82ID:4wD9lBDw
時間の掛かるファイル読込処理を非同期実行して、その処理中にファイル読込具合に応じてJavaFXのプログレスバーを更新してるんだけど、
たまにプログレスバーが更新されない場合がある。なんで?

そのファイル読込処理とプログレスバー更新はインターフェースの継承メソッドに記述していて、
Threadクラスに登録するRunnableクラスのrunメソッド中でインターフェースの抽象メソッドを叩いて呼び出している。
1)イベントトリガが、JavaFXのFileChooserの選択完了時 → プログレスバー更新される
2)イベントトリガが、別のJavaFXの子Scene上のJavaFXボタン押下時(子Sceneのhide後) → プログレスバー更新されない
setImplicitExitをどうたらこたらするというのは一通り試した
簡単に解決したいんだがなあ
0921デフォルトの名無しさん
2018/11/06(火) 12:01:52.02ID:nXssBivk
>>920
JavaFXはもうJavaの標準ライブラリではなく単なる野良ライブラリの一つに過ぎない
スレ違い
0922デフォルトの名無しさん
2018/11/06(火) 12:19:26.12ID:4wD9lBDw
回答できんのなら黙ってろよな。回答できないくせに黙ってられないから池沼なのか
0933デフォルトの名無しさん
2018/11/06(火) 19:07:34.12ID:13CfGTjW
どう見ても君がスレチ大魔王
0934デフォルトの名無しさん
2018/11/07(水) 00:26:50.27ID:s4BPycKf
substance.jarでswingの見た目変えるの好きだった
javafxは評判悪かった覚えがあるけどswing使用者はみんな移行したのかな
0935920
2018/11/07(水) 12:34:31.16ID:LJxZYzuZ
解決したったわ
しかしここはクソの役にも立たねえな
たまに書き込むけど、光合成も出来ない原始生命を相手にしているようで、ただただ孤独しか感じられねえわ
次はジュラ紀になったら来てやるから、それまでに精々、自然淘汰されておけよ
0936デフォルトの名無しさん
2018/11/07(水) 12:52:14.01ID:bimd4khF
FXのスレは本当にあるんだけどね。
0938デフォルトの名無しさん
2018/11/07(水) 14:02:24.18ID:+HyKX3eQ
>>934
FXは廃止されちゃったからね
極一部のニッチでしか使われてないしモバイルファーストやWebファーストの流れに侵食されてオワコン、とOracleさん自身が公式に宣言してる
0940デフォルトの名無しさん
2018/11/08(木) 12:06:43.94ID:QSZi8e/Z
Javaの仕事に転職したいのだけど
年収の交渉でプロ野球の契約更改のように代理人にお願いして年収アップの交渉をしてもらうシステムはないかな?
もちろん高収入になったらその1%は代理人に払うことにしたらその代理人もものすごくがんばってくれるからwin-winの関係になる。
0941デフォルトの名無しさん
2018/11/08(木) 12:17:54.62ID:Cbg63GbQ
君がなれ
0942デフォルトの名無しさん
2018/11/08(木) 12:20:00.08ID:cbRquK1Y
>>940
年収2000万ぐらいなら探せばあるだろ
それ以下なら商売にならなすぎだから厳しいと思うけど
0943デフォルトの名無しさん
2018/11/08(木) 12:25:50.93ID:Cbg63GbQ
1000万の1%が10万円。とすると月に10人以上成立させないとうまくいかんのではないか?
0944デフォルトの名無しさん
2018/11/08(木) 12:28:16.32ID:QSZi8e/Z
>>943
それ専門だから1日に5回同じ場所で連続で面接に参加して
それで1月に20日働けば月収1000万円。
0945デフォルトの名無しさん
2018/11/08(木) 12:31:21.50ID:fwzjEtEg
>>940
そんなことができる代理人は自分で稼ぐだろ
そもそも億円プログラマーなんて存在するのかも怪しいし
0946デフォルトの名無しさん
2018/11/08(木) 12:34:40.88ID:Cbg63GbQ
そういやさっきツイッターの広告でAIとチャットして何をやりたいかとか聞き出して人を募集している企業とのマッチングすのが出てきたよ。
やる前からAIに仕事奪われたようだなw
0950デフォルトの名無しさん
2018/11/08(木) 17:07:12.88ID:o3TwcDma
人工無脳でも対応向上だと騙される奴がいるんだから有効だと言わざる得ないな
どうせブラック紹介されるなら萌えキャラにでも紹介された方がいいだろう?
0951デフォルトの名無しさん
2018/11/09(金) 16:17:59.93ID:o+E2GY7o
このスレの少し前にもオラクルの認定試験の話題がありましたが、
Java Silverは持っていると役に立つでしょうか?
Java Bronzeは既に取得しています。
0955デフォルトの名無しさん
2018/11/09(金) 22:48:54.87ID:zMMfYdX4
総称型を使った抽象クラスがあって、その具象クラス全部を処理するコードを書きたいんだけど
以下のようにするとコンパイルエラーになるのでできません。
いちいちTest2の具象クラスをinstanceof等で特定して書かなければならないということでしょうか?

public class GenericsTest {
public void test() {
Test2<? extends Test> t = null;
t.f(new TestConcrete());
}

public static class Test {

}

public static class TestConcrete extends Test {

}

public abstract static class Test2<A extends Test> {
public void f(A a) {
}
}
}
0956デフォルトの名無しさん
2018/11/09(金) 22:51:18.43ID:zMMfYdX4
修正しますこうでした。Testも抽象クラスです。

public class GenericsTest {
public void test() {
Test2<? extends Test> t = null;
Test a = null;
t.f(a);
}

public abstract static class Test {

}

public abstract static class Test2<A extends Test> {
public void f(A a) {
}
}
}
0957951
2018/11/09(金) 23:58:00.70ID:o+E2GY7o
ありがとうございました。
0958デフォルトの名無しさん
2018/11/10(土) 00:57:56.92ID:XE+BpAI8
こんな記述を見かけたんですが
>Java11からはJavaFXは、ただのライブラリになったので、JavaFX側がMavenのCentral Repositoryにjarを置いてくれていたりするので、 OpenJDK11でJavaFX11を使うのであればpom.xmlのdependencyに入れるだけの話である。

JavaFXはネイティブDLLを使っていますか?
使っている場合、pom.xmlで入れられるライブラリになったというのは、
全環境用のネイティブコードが同梱されるということですか?
ほとんどのJavaライブラリは純粋なJavaコードで環境非依存だと思いますが
環境依存したライブラリはどういう扱いになるんでしょう
0959デフォルトの名無しさん
2018/11/10(土) 01:36:26.97ID:XE+BpAI8
>>956のコードですが
fの引数は? extends Testだから、Testを受け取れても良くないですか?
? extends Testで期待できるのはTestのインターフェースであり、
TestはTestのインターフェースを持っています。
しかしコンパイルエラーになります
0960デフォルトの名無しさん
2018/11/10(土) 02:07:52.87ID:XE+BpAI8
少し調べました。状況は、
A extends Test と Test  が非変であり、親子関係が完全に無視される。
f(A a)はConsumerであり、PECS原則から、? super Aを指定できるとよいが、
総称型ではないので指定できない。
Test2<A super Test>も記述不可
f(Test a)にすれば解決するが、Test2の子クラスはfの引数の型を限定したいかもしれない。
0961デフォルトの名無しさん
2018/11/10(土) 02:33:26.87ID:XE+BpAI8
なぜか一度ワイルドカードを経由する+キャストという方法で解決できました。
public class GenericsTest {
@org.junit.Test
public void test() {
Func<?> funcTmp = new FuncConcrete();
Func<Arg> func = (Func<Arg>) funcTmp;
Arg arg = null;
func.f(arg);
}
@org.junit.Test
public void test2() {
Func<Arg> func = (Func<Arg>) new FuncConcrete();
Arg arg = null;
func.f(arg);
}
public abstract static class Arg {}
public static class ArgConcrete extends Arg {}
public static class FuncConcrete extends Func<ArgConcrete> {}
public abstract static class Func<A extends Arg> {
public void f(A a) {}
}
}
0962デフォルトの名無しさん
2018/11/10(土) 23:27:50.60ID:49ccZS6D
>>958
環境ごとにjar分けて共有ライブラリ含めるだけだけど。joglとか昔からそうじゃん。
0963デフォルトの名無しさん
2018/11/10(土) 23:46:19.83ID:6id28qN8
JVMは環境ごとに用意されてるから、その部分で対応してるんでしょう
わかってると思うが当然標準ライブラリとして提供してるAPI自体は環境に依存してない

まぁ internal なコードに環境による場合分けくらいは書いてあるかもしれんけど、
JVMにはその環境用のコードさえあればいいから、全環境のネイティブコードは必要ない
0964デフォルトの名無しさん
2018/11/10(土) 23:55:28.83ID:6id28qN8
あぁごめん、Java11からの話か
そうだね、環境依存のjarと環境依存してないjarを2つ別々にダウンロードするんだろうね多分
swt+JFaceの、swt部分だけ環境依存してるのと一緒
使ったこと無いけど 上で言われてるJOGLもそんな感じかな

まぁ軽めのデータベースのjarとか環境依存のファイル全部ぶっこんでくることもあったりするけど
0965デフォルトの名無しさん
2018/11/11(日) 11:11:28.64ID:6MwZdEZT
javaとDB(oracle)のデータについて。

javaプログラム内のある変数Xに対して、DBのある列の値に存在しているかどうか
チェックしたいのですが、どうすればよいでしょうか。

1.String sqlStr = "SELECT * FROM fruit";
2.ResultSet result = st.executeQuery( sqlStr );

3.while( result.next() ) {
4. String str1 = result.getString( "price" );
5. System.out.println(str1);
}

2行目でSQLを実行して、4行目でPRICE列の値を取得していると
思うのですが、X=1000と定義していた場合、PRICE列の値に対してXの
値が存在するチェックはどのようにコーディングすれば良いでしょうか。
一致すれば出力で一致しなければエラーにしたい。

なお、PRICEデータは例として1000としていますが、ランダム数値です。
0967デフォルトの名無しさん
2018/11/11(日) 12:00:45.21ID:6MwZdEZT
"SELECT * FROM fruit WHERE PRICE = X"だと
Xが文字列になってしまうと。
Str1とXを比較すればよいと考えていましたが難しい
0969デフォルトの名無しさん
2018/11/11(日) 18:24:10.42ID:0F8Q4Ddx
>>967
prepare にするかそのまんまSQL文の中に文字列で埋め込まれるようにするか、だな。

prepare の場合はこんな感じね。PreparedStatement クラス使うやつ。"?" の部分が置き換え部分。
https://qiita.com/ika_katsuo/items/dfbf9ed227ca08256760
0970デフォルトの名無しさん
2018/11/11(日) 18:43:06.39ID:KBFxC5Cm
もし変数xの値が一つしかないなら
プリペアドステートメントでいちいち事前コンパイルする必要がない
ふつうにSQL問い合わせの文字列作るほうが速い簡単お手軽
0972デフォルトの名無しさん
2018/11/11(日) 22:00:57.21ID:KBFxC5Cm
知能が低いと
文字列の加工すらできないのか

なるほどな
0973デフォルトの名無しさん
2018/11/11(日) 22:26:11.35ID:cBZ/CGbZ
それが何を意味するのかも考えずどっかからコピペしてるからそういう質問が出るんだろうけど、技術書見ればプリペアードステートメントとか順序を追って書いてあるもんでもないのかね
0976デフォルトの名無しさん
2018/11/11(日) 22:32:01.58ID:4KGbvnyj
何も調べずに質問する方が大概だろ、質問者は神様ですってかw
0977デフォルトの名無しさん
2018/11/11(日) 23:35:34.02ID:infpFr5m
>>963
> わかってると思うが当然標準ライブラリとして提供してるAPI自体は環境に依存してない
>
> まぁ internal なコードに環境による場合分けくらいは書いてあるかもしれんけど、
> JVMにはその環境用のコードさえあればいいから、全環境のネイティブコードは必要ない

そんなことないから。java6以降環境依存な標準API追加してるからjava側で場合分けする必要ある。
0978デフォルトの名無しさん
2018/11/12(月) 00:34:16.10ID:MtlIUxHY
>>970
prepare にしとくとSQLインジェクション防止になるというのもある。
https://blogs.oracle.com/sec/042_sqlinjection_1
もちろんどうやってもそんなことは起こり得ないし1回しか同じSQL文使わないみたいな場合は埋め込めばいい。
0979デフォルトの名無しさん
2018/11/12(月) 16:56:20.13ID:ayEXvCJf
spring frameworkはMVCですか?
0980デフォルトの名無しさん
2018/11/12(月) 17:14:22.45ID:cpYKEuEA
spring frameworkはフレームワークで、MVCはプログラムの一つのモデルです。
0982デフォルトの名無しさん
2018/11/12(月) 17:50:53.29ID:ayEXvCJf
>>980
どのモデルを採用してるのですか?
0983デフォルトの名無しさん
2018/11/12(月) 22:41:38.37ID:JKEbmYKN
>>981
awtのDesktop、nio2(more nio)のファイルパーミッション等、apple javaのeawt移植。

あと6以前からのjava soundもjreに含まれてるのは単なるRIで仕様と実装は別物で、
実装部分のLineの挙動はプラットフォーム依存。7以降MIDIのソフトシンセはクロスプラットフォームになったけど。
0984デフォルトの名無しさん
2018/11/12(月) 23:02:27.75ID:THHCGQKY
Javaのメモリ管理に関して教えてください!

例えば、PCのメモリが32GBあるPCで、
インスタンスを大量生成するプログラムを動かすとします。
また、このプログラムの起動引数に、ヒープ最大使用量=2GB
を設定して起動していたとします。

この場合、大量のインスタンスを生成していった場合ですが...
ヒープ最大使用量=2GBを超えてヒープを使用することはありますか?

それと、ヒープサイズがヒープ最大使用量に近付いた場合、
ガベージコレクションが発生するようになりますか?
0986デフォルトの名無しさん
2018/11/13(火) 06:56:40.27ID:t6QPVwz9
>>984
> ヒープ最大使用量=2GBを超えてヒープを使用することはありますか?

ないよ、ヒープ最大使用量を超えるとOutOfMemoryErrorが投げられる

> ヒープサイズがヒープ最大使用量に近付いた場合、
> ガベージコレクションが発生するようになりますか?

なるよ、サーバを管理してるけどたまにアプリにメモリリークがあって
メモリが解放されなくてGCが頻発して最終的にOutOfMemoryErrorになる
ことがある、急速にメモリを消費してGCが稼働する間もなくエラーになることもある
0987デフォルトの名無しさん
2018/11/13(火) 08:44:10.18ID:z+WaWgDc
>> 985

Object o = new Object();
とかです!

>> 986

ありがとうございます!
ということは、PCのメモリを全部食い潰すことはないのですね。
助かります。
0989デフォルトの名無しさん
2018/11/13(火) 16:13:23.72ID:BO12xGFO
参照にnull渡してもすぐに廃棄してくれないから
メモリぎりぎりの処理をするとGC発生せずに落ちる
OutOfMemoryErrorの前に1度はフルGCしろよと思う
0991デフォルトの名無しさん
2018/11/18(日) 19:34:14.79ID:pZxF/iWK
java11に移行しようとすると、ライブラリ類が対応してるのか不安
自分のアプリだけテストしても不十分だ
例えばNettyもjava11で少し問題が出たようだ
0992デフォルトの名無しさん
2018/11/18(日) 19:51:16.43ID:pZxF/iWK
java8からの移行を考えてたけど、やっぱり一部パッケージが削除されたせいで
動作しないものが出るようだ
移行作業はまずビルドが成功するかという問題があって、
失敗したら最悪ライブラリを自分で修正しないといけなくて、
ビルドに成功したとしてもライブラリはjava11でテストされていないという状況

ほんの1年ちょい前はjava8が最新だったんだが・・・
こんなの新規プロジェクト間に合わないだろ
移行作業しつつ開発進めないといけない
0993デフォルトの名無しさん
2018/11/18(日) 21:06:07.68ID:pZxF/iWK
https://builder.japan.zdnet.com/sp_oracle/35095997/2/
>Java Policy Tool

これの代替手段はありますか?

>時代遅れとなったセキュリティAPI
これはjava.securityのことですか?java11でそのパッケージが無くなるんですか?
0994デフォルトの名無しさん
2018/11/18(日) 23:08:00.76ID:JqgRfJJT
>>993
>これの代替手段はありますか?
ない。どうせpolicy toolはカスタムポリシー対応してないからポリシーファイルは手書きする必要がある。
そもそも、これ技術デモだから。

>これはjava.securityのことですか?java11でそのパッケージが無くなるんですか?
非ポリシーベースのsecurity apiのうち1.1時代のだけ。
0995デフォルトの名無しさん
2018/11/18(日) 23:39:07.26ID:pZxF/iWK
java8から11に移行する場合、security apiは特に変わってないと考えていいですか?
0996デフォルトの名無しさん
2018/11/19(月) 00:09:28.48ID:MZ1FDVWs
あー1.1のAPIを8で使ってたらそうじゃないのか
0997デフォルトの名無しさん
2018/11/19(月) 00:35:10.50ID:7qQcp7Oe
正確にはcheckPermissionに転送してるだけのSecurityManagerの一部のメソッドだけどね。
今のところ削除予定なのは特殊なやつだけだけど1.1/1.2時代のapi削除するのは時間の問題だと思うよ。
0998デフォルトの名無しさん
2018/11/19(月) 00:47:13.92ID:MZ1FDVWs
何で最初から理想的なAPIにできないんだろう?
0999デフォルトの名無しさん
2018/11/19(月) 11:00:29.57ID:C68x9bSi
>>998
君が作ってないからさ
君が作れば理想的なものになる
今すぐ新言語を作れ
1000デフォルトの名無しさん
2018/11/19(月) 11:04:42.70ID:X6/A5UND
>>998
バグと同じで改修に次ぐ改修で無理が想定外や見落としが出て、結果継ぎ接ぎになるんだろ。
10011001
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 281日 17時間 15分 2秒
10021002
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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