[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 10/31 23:02 / Filesize : 250 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

☆★Java質問・相談スレッド178★★



1 名前:デフォルトの名無しさん [2016/06/17(金) 08:16:55.52 ID:442rGUo0.net]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。

前スレ
★★Java質問・相談スレッド177★★©2ch.net
echo.2ch.net/test/read.cgi/tech/1458033246/

496 名前:デフォルトの名無しさん mailto:sage [2016/08/19(金) 20:37:11.37 ID:tsEZzAHj.net]
>指定した値に一番近い要素の番号を得たいと思ってます
これが一回だけなのか、複数回なのかがわからないのに効率の良いアルゴリズムなんて答えられるわけがない

497 名前:デフォルトの名無しさん mailto:sage [2016/08/19(金) 20:58:16.30 ID:59AD2ZKx.net]
>>491
10万回だとした場合の効率よいアルゴリズム示してみたら?

498 名前:デフォルトの名無しさん mailto:sage [2016/08/19(金) 21:04:57.74 ID:CkYJIhBp.net]
>>491
何らかの値が指定される都度、一番近い要素の番号を返す

その処理を、10万回繰り返すものとなります

499 名前:デフォルトの名無しさん mailto:sage [2016/08/19(金) 21:14:41.84 ID:WMQnppU0.net]
とりあえず二分探索する
二分探索で我慢できなくて配列aの最大値が数万くらいなら配列を展開する

int[] a = {1, 6, 9};
int[] b = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2}

配列aの最大値が24万程度なら、展開した配列bに必要なメモリは2^(18+2)で1MB弱

500 名前:デフォルトの名無しさん mailto:sage [2016/08/19(金) 23:12:34.89 ID:ZqQW0r9G.net]
>>494
二分探索と配列の展開、情報ありがとうございます

展開した配列を用意するためのプログラムが必要そうですが、こちらの方が性能は良さそうですね

ありがとうございました

501 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 00:08:07.91 ID:BMoP1SdH.net]
作り方がおかしいかご意見をお聞かせください。

通信関連モジュールを作成しているのですが
・通信前のデータチェックでのエラー
・通信結果の解析結果のエラー
これら2つの結果を返すコールバック用のメソッドを分けて作っていたのですが
「そんなイレギュラーな作りをするな!同じメソッドで引数を変えろ!」
と言われました。
エラーが発生するタイミングが違うので同一インターフェースの中で分けたのですが、
「イレギュラー」といわれるほど変な作りなのでしょうか?

502 名前:494 mailto:sage [2016/08/20(土) 00:15:39.59 ID:BMoP1SdH.net]
関連モジュールは他にないので、「他のモジュールと比較しておかしい」というわけではありません。
あくまでもJAVAの一般論として「イレギュラー」と言われてます。

503 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 06:53:27.62 ID:B6Zc+FaI.net]
その情報だけでは必ずしもおかしいとは思わない。
メソッドを分けることで、利用者はその二種類のエラーを区別することを強制される。
だから、その二種類の区別が利用者にとって重要だと想定されるのであれば一つで分岐するより分けた方がいい。
そうでもない(利用側の処理に違いがない)なら一つでいい。

504 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 11:38:21.48 ID:hWaMH8VG.net]
>>496
MyConnector con = new MyConnector();
con.setCallback1(callback1)
con.setCallback2(callback2)
con.connect()
みたいに必要なcallbackを追加していけるならいいけど、

con.connect(callback1, callbak2)
ならまとめてもいいかな



505 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 15:20:42.65 ID:D7SVWed1.net]
まぁ俺だったらひとつにするな
それで定数intとかでエラーIDを作ってそれを渡すとかするわ

>>496の考えだと今回は2件だけど3件、4件と行程が増えた数だけメソッドを作ることになる。
そもそもそれは実装する側も使用する側も手間になる。

例えばどのエラーでも同じことをしたかったとしても使用する側は、その分のコールバックメソッドを立てて、メソッド化して複数箇所で呼び出したりする必要がある。
それって手間にじゃん

>>496が作ったモジュールと実際にモジュールを使う側の関係が1:多の関係であるなら、なるべく使う側に汎用性をもたせてやるほうがいい。
今回の汎用性というのはエラーを分けるか分けないかってことね
1つまりモジュール側は必要になった時に判断できる手段を用意してあげることだとおもう

506 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 17:44:13.96 ID:s0elS7/F.net]
10万回を前半5万回と後半5万回に分けて
マルチスレッド化

507 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 18:30:31.94 ID:06sBBxjU.net]
10万スレッド作っ(ry

508 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 19:52:31.00 ID:maedJSZM.net]
parallel入れて最適化したとしても
10万件程度では速度向上は期待できない気もする
https://paiza.io/projects/N1anFUeXUTdILH0sJnwl5g

509 名前:デフォルトの名無しさん [2016/08/20(土) 21:26:00.33 ID:6io4DnXk.net]
今や求人はJavaやC#だらけですが、どうしてもJavaやC#になじめず
悩んでいます。派遣PGです。
自分なりになじめない原因を考えてみるとどうもJavaやC#に限らず
ネイティブで動作していない言語に拒否感があります。
C/C++やアセンブラにはない「気持ち悪さ」とでもいうのでしょうか…
もうエンジニアとして終わりなのかなとか、必要とされていないので
は?という悲観的な気持ちです。
どうすれば乗り越えられるでしょうか?

510 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 21:32:20.77 ID:DlK5hCub.net]




511 名前:494 mailto:sage [2016/08/20(土) 21:35:28.10 ID:BMoP1SdH.net]
ご意見ありがとうございました。
>> 498さんのご意見が特に参考になりました。
確かに今後拡張していくと面倒なことになりますね。
良かれと思って分割したのが裏目になりそうです。

ありがとうございました。

512 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 21:39:00.90 ID:DlK5hCub.net]
仕様がわかんねーからどうでもよさげ

513 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 21:41:08.87 ID:DlK5hCub.net]
つーか、設計が間違ってたということね

514 名前:デフォルトの名無しさん [2016/08/20(土) 22:04:50.30 ID:SbaSzAw8.net]
>>504
JIT



515 名前:デフォルトの名無しさん mailto:sage [2016/08/20(土) 23:56:34.43 ID:UumqURVq.net]
>>504
マジなのかコピペか釣りか知らないけど、まず板名や>>1すら読めてないから、多分馴染めない原因は他にもあると思うよ
ネイティヴじゃないとか意識する以前にね

もし本当にネイティヴ非ネイティヴを意識して馴染めないのであれば残念だけどこの先やっていくのはつらいからくぎりをつけたほうがいいよ

516 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 08:57:32.48 ID:IUzncNpZ.net]
縦書きフォント使いたいんだが、フォント読み込みから自力実装するしかない?

517 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 10:12:08.48 ID:duM5Lppi.net]
お前どこでフォントを使いたいのか
環境も書かずに答えられると思ってんの?

518 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 10:49:45.26 ID:MeZyvK3R.net]
ホント

519 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 11:28:59.60 ID:IUzncNpZ.net]
>>512
JNI等を使用しないWindowsのjava.awt.Graphics2Dで。
レイアウトとか自分でやるんで、truetype/opentypeフォントに含まれる縦書き用グリフや配置情報送り幅等を取得したい。

520 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 12:08:10.04 ID:MeZyvK3R.net]
JDKのフォント周りはホントにイミフ

521 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 12:16:19.38 ID:xQ8AfaVf.net]
@つきのフォント読み込んで90度回転で書けばいいんじゃなかったっけか?

等幅フォントなら横書き用フォント使って縦に一文字一文字書いてくのもありかもだが。
句読点や括弧をちゃんと処理せんといかんけど。

522 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 12:46:54.85 ID:IUzncNpZ.net]
@付きとかそんなものはないのです…
MS 明朝等に@をつけてFont作っても存在しないフォントはDialogが使われるだけなのです…

import java.awt.Font;
import java.awt.GraphicsEnvironment;
public class FontTest
{
public static void main(String[] args)
{
// @付きフォントなんて無い
for (Font font : GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts())
{
System.out.println(font);
}

// @付きで指定しても存在しないフォントはDialogになる
Font font = new Font("@MS 明朝", Font.PLAIN, 12)
System.out.println(font.getFontName());
}
}

523 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 14:06:54.91 ID:xQ8AfaVf.net]
>>517
あらごめん。 Windows7あたりからかフォントの扱い変わったらしいから、それが原因かも。

524 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 15:02:21.58 ID:rOj1s/df.net]
ろくにテストもしてないのだろう



525 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 15:14:29.45 ID:rOj1s/df.net]
oracleのやる気のなさ

526 名前:デフォルトの名無しさん [2016/08/21(日) 15:53:29.38 ID:hSejVSNi.net]
>>490, >>501, >>503
ローカルでJITコンパイル切ってやってみたらコア数まではスケールするみたいよ

おっぱいざだとJITコンパイルがあってよくわからん
https://paiza.io/projects/wTqOKtC_yCz4-2Z5xCkPAw

シングルスレッドでも20ミリ秒だからマルチスレッドにする意味ないかも

527 名前:デフォルトの名無しさん [2016/08/21(日) 18:00:10.89 ID:hSejVSNi.net]
>>490
配列よりは遅いけどTreeMapを使うやり方もあるよてことで
https://paiza.io/projects/rqnLcs9ZehOWZgOIo-WHOA

528 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 18:12:19.70 ID:dUfPoSxX.net]
javaって10万スレッドも同時に実行出来るの?
メモリー量とか、そういうのは別にして。
同時に実行出来るスレッド数に上限は無い?

529 名前:デフォルトの名無しさん [2016/08/21(日) 18:20:43.74 ID:hSejVSNi.net]
>>523
CPUとメモリが潤沢にあれば行けるんじゃないかな
俺の環境ではi7のCPUがフル稼働でWindowsがフリーズしかけた
必死こいてプロセス殺した
>>502みなさん2chのデマに気を付けてください

530 名前:デフォルトの名無しさん [2016/08/21(日) 19:07:34.19 ID:i9hjM3oz.net]
そういや Windows 以外のXやiOSではどうなってんだろうね。

531 名前:デフォルトの名無しさん [2016/08/21(日) 19:10:29.74 ID:i9hjM3oz.net]
523はリロードしてなくて上の方のフォントの話へのレスだったが、もうどうでもよい。

532 名前:デフォルトの名無しさん [2016/08/21(日) 19:11:22.55 ID:i9hjM3oz.net]
>>524
試す人がいるとは思わなかったw

533 名前:デフォルトの名無しさん [2016/08/21(日) 22:35:26.83 ID:M72PC28j.net]
>>524
こちらで>>490のやつをaが2000件bが10万件で10万スレッド作ってやるのを作ってみたが特に問題なく数秒で終わったぞ?
スレッドなしのストレートなやつはもっと速く終わったけどな。w

そういや>>490のやつは数秒だったとしても時間掛かりすぎでまずいぐらいの高速性求めてたのかな?

534 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 22:37:07.19 ID:M72PC28j.net]
あ、bって指定される値の方ね。



535 名前:デフォルトの名無しさん mailto:sage [2016/08/21(日) 22:43:19.76 ID:M72PC28j.net]
>>490のやつってこんなんでいいんだよなあ?(Thread使わないストレートなやつ)
https://paiza.io/projects/6k1S75kySYEpB-6n7ntBRw
とても速く終わるんだが。

536 名前:デフォルトの名無しさん [2016/08/21(日) 23:16:05.19 ID:hSejVSNi.net]
>>528
コードがマズかったかな
そちらの10万スレッドのコード教えて
もっかいやってみる
俺のi7の力を見せてやる

537 名前:デフォルトの名無しさん [2016/08/21(日) 23:50:43.54 ID:M72PC28j.net]
>>531
https://paiza.io/projects/xmOg-JbIQdMhaEt9mtNy-A

ただしこのサイトの実行環境ではメモリ上限を超えるようで OutOfMemoryError になる。

538 名前:デフォルトの名無しさん [2016/08/21(日) 23:55:48.92 ID:hSejVSNi.net]
>>532
あざーす

539 名前:デフォルトの名無しさん [2016/08/22(月) 00:09:39.70 ID:4FCeXfXX.net]
10万スレッドで5秒だった
生のスレッド使えばいいのか
マジかー

540 名前:デフォルトの名無しさん mailto:sage [2016/08/22(月) 10:01:26.36 ID:MdBT+DeE.net]
ネタでやるのはいいけど
コア数(HT含む)を超える数のスレッド作っても意味無いからね

541 名前:デフォルトの名無しさん mailto:sage [2016/08/22(月) 10:55:58.54 ID:C6WXEgXb.net]
酷いループを用意しても2,000×100,000で時間かかりすぎる場面が発生しない
前提条件そのものに問題がある(根本的に勘違いしている)が濃厚

542 名前:530 [2016/08/22(月) 12:51:08.04 ID:mEg9CMpU.net]
>>535
いやわかってる。
530のプログラムもループさせてスレッド作った直後にすぐスタートさせてるのですぐ終わるやつは多分ループ抜ける前に終わっちゃってて同時に10万スレッドが動いていない。
同時10万を本当にやるとしたらスタート直後に待たせてメインスレッドが全体を同時に動かさせるようにする必要があるが、今のところやる気はない。w

543 名前:デフォルトの名無しさん mailto:sage [2016/08/22(月) 20:36:07.09 ID:G2Ad46dy.net]
https://ideone.com/7BUuq3
バーチャルマシンにオプション付けてスレッドのスタックを
調整すると沢山同時に起動実行出来ることが分かった。
-Xss128k
とか。数字は小さい方がいいみたい。ウィンドウズのタスクマネージャで
見ているとスレッド数が増えていくのが分かる。ある程度のところで
java.lang.OutOfMemoryError: unable to create new native thread
となった。

544 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 19:46:51.49 ID:xJCgpC1z.net]
Winで動かす場合はJavaのVM自体がいくつもスレッド使っているから
Windowsの制限よりは少なくなるだろ。
https://technet.microsoft.com/ja-jp/windows/mark_04.aspx



545 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 23:43:57.21 ID:3vGB/zKb.net]
synchronized使って10万スレッドやってみたらフリーズしたw
最初何回かは大丈夫だったんだけどな。eclipseで3回目は何分待ってもマウスカーソルが動かなくてしょうがないから電源切った。w

546 名前:デフォルトの名無しさん mailto:sage [2016/08/25(木) 02:23:50.28 ID:l83TC/zZ.net]
build.gradleでライブラリをcompileに書くときにバージョン番号を省略すると最新版が入りますが、入ったライブラリのバージョンを確認するにはどうすればよいですか?またライブラリはどこにダウンロードされますか?

547 名前:デフォルトの名無しさん mailto:sage [2016/08/25(木) 03:12:32.19 ID:s1NjE0Yt.net]
Javaの質問と言えるのか分からんが
gradle dependencisで依存関係表示
インストール先は大抵$HOME/.m2の下

548 名前:デフォルトの名無しさん mailto:sage [2016/08/25(木) 03:18:39.81 ID:l83TC/zZ.net]
>>542
ありがとうございました。.gradle以下ばかり探してました。

549 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:05:16.01 ID:Pr4GF7QY.net]
画像を表示するときビット配列から生み出す方法とImageオブジェクトのクラスから生み出す方法があるみたいだけど
どう使い分ければいいの?ってかどう違うの?

550 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:10:44.30 ID:ev9L5f83.net]
表示することを聞いてるのか生み出すことを聞いてるのか曖昧だ

551 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:19:04.46 ID:ev9L5f83.net]
Javaで画像っていうとBufferdImageを直にインスタンス化するか
ImageIO#readメソッドを使うかだと思うけどどっちのことを言ってるん

552 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:25:03.92 ID:Pr4GF7QY.net]
ImageIconクラスのことです!!!!!
曖昧ですいません、始めたばっかで画像表示しようとしてるんだけどいまいちよく分かんなくて

553 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:25:34.77 ID:wVJbbEHi.net]
java.awt.Toolkit#createImage() ってのもあるな。

554 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:29:31.96 ID:wVJbbEHi.net]
>>547
んなもん使いやすい方使えばいいじゃないか。内容が同じなら最終的には違いはない。
途中の内部処理が違うだけ。



555 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:35:09.24 ID:ev9L5f83.net]
ソースコードによると
https://github.com/frohoff/jdk8u-dev-jdk/blob/master/src/share/classes/javax/swing/ImageIcon.java

Imageを受け取る方は直接loadImageというプライベートメソッドを呼んでる
byte[]を受け取る方はToolkit.getDefaultToolkit().createImageでImageにしてからloadImageを呼んでる

556 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:36:34.64 ID:ozGx3CHe.net]
出た後だし、泰山雷同して鼠一匹、でした

557 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 22:40:40.16 ID:Pr4GF7QY.net]
なるほどつまり内部構造的な違いができるだけで結果は同じなのね
すいません助かりましたありがとう!

558 名前:デフォルトの名無しさん [2016/08/29(月) 00:03:21.66 ID:Y/vqlQ//.net]
>>551
d.hatena.ne.jp/mkusunok/about

559 名前:デフォルトの名無しさん [2016/08/29(月) 17:24:53.93 ID:AcWh2Iym.net]
こんにちは。

趣味でJava用ゲームライブラリlibGDXを利用してゲームプログラミングをしている者なのですが、アプリケーションの配布について質問させてください。

Java製のアプリはjar形式にて配布されることが普通かと思いますが、私はWindows向けにはexe形式にて配布したく思っております。
そのためにはlanch4jやexewrapといったツールを用いることができるかと思いますが、その際、実行環境がインストールされていないPCでも実行できるようにJREを同梱し配布することにライセンス上問題はありますでしょうか?
因みにアプリケーションは有償での配布を予定しております。
論拠などもお示し頂けると嬉しいです。

よろしくお願いします。

560 名前:デフォルトの名無しさん [2016/08/29(月) 17:53:07.10 ID:IWCj2egw.net]
>>554
ライセンスは知らんがJRE配布ってどれだけ巨大になると思ってるの?
実行環境のインストールとかインストーラー起動するだけで出来るのに

561 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 18:03:18.33 ID:C9HSRABQ.net]
>>554
特に問題ないよ
www.oracle.com/technetwork/java/javase/terms/license/index.html
www.oracle.com/technetwork/jp/licenses/javase-dev-license-2595998-ja.html

562 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 18:03:51.24 ID:C9HSRABQ.net]
あとこれ
https://www.java.com/ja/download/faq/distribution.xml

563 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 18:07:41.39 ID:HSXk2xhn.net]
有償なら絶対にJRE配布の方がいい
動かんやないか金返さんかいボケェ!!!(JREが入ってない)
動かんやないか金返さんかいアホォ!!!(JREが古い)
動かんやないか金返さんかいドァホ!!!(JREが新しい)
動かんやないか金返さんかいコラァ!!!(JREのインストール失敗)
確実にこうなるから

564 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 18:12:22.12 ID:C9HSRABQ.net]
経験談やめろ



565 名前:デフォルトの名無しさん [2016/08/29(月) 18:27:28.96 ID:IWCj2egw.net]
>>558
そんな無能いるのか?

566 名前:デフォルトの名無しさん [2016/08/29(月) 18:28:17.44 ID:IWCj2egw.net]
動かんから金返せは動作チェック含めた体験版をWEB配布すればいいし

567 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 18:40:23.84 ID:HSXk2xhn.net]
ユーザーのITリテラシーを舐めてはいけない
機械音痴なお前の母ちゃんにプレイしてもらうくらいのつもりで丁度いい
体験版なんて「ジャカアしいわそんなもん知らんがなエエから金返せやワレェ!!!」で終わり

568 名前:デフォルトの名無しさん [2016/08/29(月) 18:44:32.90 ID:IWCj2egw.net]
購入ページに64pxくらいの赤文字で
「動作チェックの為に体験版で遊んでから購入して下さい。返金には一切応じません」って書いておけばいいやん
それか体験版で遊んだら認証コードGET出来て認証コードないと買えないとか

569 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 20:08:55.85 ID:BlZeW1Wo.net]
>>553
何これ?

570 名前:デフォルトの名無しさん [2016/08/29(月) 21:14:26.99 ID:jQ52lz2j.net]
JRE付きとなしを両方配布して、金はライセンスキーを売る形式にして、それは起動後に入力する事になるので多分苦情は減る。
ライセンスキー買ってくれなくても制限付きで少しは動くようにしといてそれを体験版ということにすれば良い。

571 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 21:54:17.38 ID:ACcJrIRQ.net]
様々なご意見やご提案ありがとうございます!
大変参考になりました。

以前、同じくJavaで作ったゲームを公開した際に、フリーであるにも関わらず動作しない旨の苦情を多数頂いたもので、有償の場合どうなってしまうのかと考えたらJREを同梱してしまうのが良いのかなと思い相談させて頂きました。

これから公開方法については皆様から頂いたご意見を参考に決めたいと思います。

また、ライセンス絡みについて参考にするため、すでに公開されているJava製のゲームにJREが同梱されている例が無いか調べたところ、Windows環境下にも関わらずOracleのJREでは無くOpenJDK(?)が同梱されている例が見つかりました。
OpenJDKの理由や違いについては私の知識不足によりまだ分かっていませんが、皆様から頂いたアドバイスやURLによるとOracleのものでも全く問題はなさそうに思えるのでまた調べていきたいと思います。

ありがとうございました。

572 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 23:00:52.88 ID:WaGPxa3J.net]
商品の管理するプログラムを考えてます
商品をオブジェクト、そのフィールドにpriceがあり、例えば日本円での価格をsetPrice()で設定したとして、
・ある商品A、B、C  は、ドルでの価格を知る必要がある
・ある商品A、  C、Dは、ユーロでの価格を知る必要がある
・それぞれのメソッドは、どの商品についても同じ処理

こういった場合のクラスの設計について、よい指針を教えてください
・商品クラスを継承したA、B、C、Dクラスに対し、A、B、CにgetDollarPrice()を、A、C、DにgetEuroPrice()をコピペで実装する
・商品クラスを継承したAC商品クラスにgetDollarPrice()、getEuroPrice()を実装。同じくB商品クラスにはgetDollarPrice()のみ、D商品クラスにはgetEuroPrice()のみを実装
・基底の商品クラスにgetDollarPrice()、getEuroPrice()を実装する。継承したクラス側では、使わないメソッド(例えばDのgetDollarPrice())は何もしない処理でオーバーライド
・Public static calcDollar()、同calcEuro()といったメソッドを作成し、必要時に計算する

上ではドル・ユーロとしましたが、他にも元とかウォン等色々種類があり、そして商品ごとに必要な機能が不規則に異なっているので、
どう設計したらよいか悩んでいます

ちなみの元のソースは、C++の多重継承を用いて実装されていました

573 名前:デフォルトの名無しさん [2016/08/30(火) 00:00:27.21 ID:vWqGzECl.net]
>>567
デフォルトメソッドで多重継承できるよ
商品ごとにインタフェース実装しまくることになるから
どのインターフェースを実装するか商品を階層的に分類できないときついかも
すでに多重継承で実装できてるのならいけるかも!?

Java9の標準ライブラリではJoda Moneyをもとにしたものが使われるんだって
中身の実装はこれとか
https://java.net/projects/jjug/pages/Adopt-a-JSR-JavaSE9
www.joda.org/joda-money/

574 名前:デフォルトの名無しさん mailto:sage [2016/08/30(火) 00:00:29.88 ID:vcGs2dWd.net]
>>567
getPriceがPriceクラスのオブジェクトを返す
PriceクラスはasDollerやasEuroなど一通りの表現を実装するイミュータブルなクラスにする



575 名前:デフォルトの名無しさん mailto:sage [2016/08/30(火) 01:47:09.82 ID:TaoYiOtt.net]
RPGのモンスタークラスと同じだろ

数百種類のモンスター型の、switch文を書きたくない場合、
数百種類のクラスを作って、自動的に各クラスが適切な処理をする

つまり、仮想関数

576 名前:デフォルトの名無しさん mailto:sage [2016/08/30(火) 08:26:54.20 ID:agWpAPx4.net]
getPrice(rate)
return price * rate

じゃだめ?

後はそれぞれの価格が欲しいところでレートを設定するだけでいいし商品クラスは常に同じ動きするし

577 名前:デフォルトの名無しさん mailto:sage [2016/08/30(火) 09:01:09.43 ID:vcGs2dWd.net]
>>571
それはない
それ呼び出す側がメソッド内で何やってるかを明らかに意識してるだろ
全く抽象化になってない、掛け算だけメソッド内でやる意味がない
せめて変換メソッドを定義したCurrencyクラスのインスタンスを渡すとかするべき

578 名前:デフォルトの名無しさん mailto:sage [2016/08/30(火) 09:04:39.92 ID:qpyuPRUS.net]
レスどうもありがとうございます

>>568
interfaceの嵐になるのだろうなぁ、それでいいのかなぁ、と
悩みました
リンク先など見て考えます

>>569
なるほど
Priceクラスもよいですね

>>570
RPGは作ったことないですが、そんな風に実装されてるのですね
ソースの大半がモンスタークラスの実装になりそうですね

>>571
レートを換算するだけなので、実はそれでもよいです
ただ、オブジェクトに換算後の値も持たせたいなぁ、と思ってます
換算すれば求まるデータならオブジェクトに持たせる必要ない、のかな?

579 名前:デフォルトの名無しさん [2016/08/30(火) 11:17:45.70 ID:vwHt2PHp.net]
>>567
それ全通貨のレートを保持するクラス作っておいて、そのクラス経由で他の通貨への換算やれば良いだけでは?

580 名前:デフォルトの名無しさん mailto:sage [2016/08/30(火) 11:31:09.72 ID:xgpTgq7w.net]
個々の商品が同じレートで計算って事は現実的に無いと思うので、
void setPrice(Currency currency, String price)
String getPrice(Currency currency)
みたいなIFにして、内部ではHashMapで管理すれば、通貨が増えたらCurrencyのenum増やせばいいんじゃね?

581 名前:デフォルトの名無しさん [2016/08/30(火) 11:56:26.35 ID:vwHt2PHp.net]
それだ

582 名前:デフォルトの名無しさん mailto:sage [2016/08/30(火) 19:05:48.03 ID:vv6Q96L1.net]
javaで動いているプログラムを監視する目的で、JVMTIのMethodEntryイベントやMethodExitイベントを使って遊んでます
JDIでも同じことが出来るみたいなのですが、こういったデバッガの拡張をeclipseなんかのIDEのプラグインで実装するにはどうすれば良いですか?

例えばIDEのエディタでブレークポイントを

583 名前:セットして、そのIDEでデバッグを実行したらBreakpointイベントで自分が実装した処理が行われる(ログが吐き出されるとか)
的なことがやってみたい
[]
[ここ壊れてます]

584 名前:デフォルトの名無しさん mailto:sage [2016/08/30(火) 19:31:07.82 ID:q9MYe/9f.net]
まずは例えばで挙げられているソースコードを読んでみるのはどうですか



585 名前:デフォルトの名無しさん [2016/09/01(木) 18:07:14.17 ID:isvppOQZ.net]
これを実行すると出力が1になるのですが、何故でしょうか。

@Integer inti = new Integer(0);
AInteger intj = new Integer(1);
Binti = intj;
Cintj = 2;
DSystem.out.println(inti);

自分の考えだと、
@intiが、値0のインスタンスを参照
Aintjが、値1のインスタンスを参照
Bintiが、intjが参照しているインスタンスを参照するように変更
Cintjが参照するインスタンスに値2を設定
Dintiもintjも同じインスタンスを参照してるはずなので出力は2
になるはずなんですが、1になります。

586 名前:デフォルトの名無しさん [2016/09/01(木) 18:17:12.59 ID:JZugZEHC.net]
>>579
Integerは不変
もし不変じゃなかったとしても
Cの所で
intj.value=2;になる

@intiに、値0のインスタンスの参照を代入
Aintjに、値1のインスタンスの参照を代入
Bintiに、intjのインスタンスの参照を代入(intj==intiになる)
Cintjに、値2のインスタンスの参照を代入(自動ボックス化。コンパイラがnew Integer(2)に変換している)
Dintiとintjは違うインスタンスを参照しているので値は1

587 名前:デフォルトの名無しさん [2016/09/01(木) 20:27:01.67 ID:K7BE+EFW.net]
>>579
4の所は intj = new Integer(2); って書いてるのと同じだから。

588 名前:デフォルトの名無しさん [2016/09/01(木) 20:28:01.03 ID:K7BE+EFW.net]
ってよく見たら既に書いてあるじゃないか。とほほ。

589 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 20:52:55.20 ID:qC9ojyjS.net]
ドンマイ、ガンバ

590 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 20:53:01.09 ID:wr8HVpEY.net]
とほほsan?

591 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 21:15:27.70 ID:52Zd8aZn.net]
浦和レッズ、じゃじゃじゃじゃん

592 名前:デフォルトの名無しさん [2016/09/02(金) 10:23:18.49 ID:KWQoOgI3.net]
Javaのゴミっぷりが酷い
Java作ってる奴らって日本で言うところの小卒相当じゃね?
開発者とは名ばかりのゴミ集団なんだろうなJava開発団
JavaでAES暗号化したものがOpenSSLで復号できないとかJavaマジで糞すぎ
まともに暗号化すらできないゴミ言語なら暗号化機能付けるな
暗号化関連のリファレンスとかあったら騙されて時間をドブに捨てる奴がいるだろうが
プログラマを平均の数倍給料もらってる程有能でスキルある人材をなのにその騙して時間を無駄にした罪は重い
本当にJava作ってる奴等は頭のが馬鹿しかいないんだろうな
低機能を隠すために嘘リファレンス用意するとか人間的にも腐ってる

593 名前:デフォルトの名無しさん mailto:sage [2016/09/02(金) 11:07:29.18 ID:OcjKSC/i.net]
ならば使わなければいいだけの話
選択肢色々あるので

594 名前:デフォルトの名無しさん mailto:sage [2016/09/02(金) 12:15:47.07 ID:Do4GNfXI.net]
小学生レベルだと勤め先に事欠くので選択肢はないよ



595 名前:デフォルトの名無しさん mailto:sage [2016/09/02(金) 12:37:29.73 ID:OcjKSC/i.net]
そう感じるヤツがjavaを使わなければいいだけの話
利用するプログラミング言語の選択肢は色々あるので

596 名前:デフォルトの名無しさん mailto:sage [2016/09/02(金) 12:57:20.18 ID:7JZUO+bM.net]
感じる感じないではなく、無能には選ぶ権利などないってことでしゃろ
それは無能なのが悪いのさハハハ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<250KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef