◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:★★Java質問・相談スレッド183★★ YouTube動画>9本 ->画像>3枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1588770728/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 http://pc11.2ch.net/hp/ Webプログラミング http://pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 (p)http://www.wikiroom.com/java/?path,classpath ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 ・String に == は使うな。equals() を使え。※ 質問時の心得 ・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。 ・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。 前スレ ★★Java質問・相談スレッド182★★ http://2chb.net/r/tech/1542595026/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured 初歩的な質問をしていいですか? 変数名の付け方についてですが、 スネークケース(my_nameなど)はなぜ推奨されないのでしょうか?
>>5 別に深い意味はなく、単に標準 class library がそうなっている、というだけではないでしょうか。
自分だけで書いているのなら my_name でガンガン書いてもいいと思いますよ、要は他人との関係というだけで
>>5 (オラクル公式)コーディング規約に従っておいたほうが他人が読みやすいからじゃね。
公式が推奨してない理由はわからんけど、何か理由を探すなら、
例えばpythonみたいにコーディング規約の中に🐫と🐍が混在するのを避けたかったのか、
cみたいに1行がやたら長くなるのを避けたかったのか。
>>6-8 そうだったんですね。
いろいろと知らなかったことを聞けました。
ありがとうございました。
EclipseのJava14対応ってまだまだバグありますよね
processingでエラー部分のラインを知る事はできますでしょうか
'(シングルクウォーテーション)と"(ダブルクウォーテーション)の使い分けに悩みます。 悩みを消しこれだと自信を持って使う考え方はありますか? どっちを使ってもいい場合とどちらか限定の使い方があるので気持ち悪いですw
Javaの初心者です。 javaって、画面は作れるし正規表現も使える最強の言語ですか? ちょっとクラス名が長いかな?
やり直し。 Javaを今から勉強しようと考えています。 画面も正規表現も使えるので、C++、Ruby,Pythonよりも Javaを勉強しようと思っていますが、欠点はありますか? 作りたいのは、デスクトップアプリです。
Javaはいいぞぉー JavaFXを使えばデスクトップアプリもちょちょいのちょいよ Javaだけでサーバー、デスクトップ、モバイルすべての領域を抑えられるのが大きなメリット
JavaFXはOracleJDKに同梱されなくなっただけで続いとるよ 他所のOpenJDKディストリにはJavaFXを同梱してるまのまであるし
質問です。 戻り値のあるメソッド内で例外処理を行いたいのですが、 以下の場合はどう対処すればよいでしょうか? public static int method() { __try { ____… ____return 10; __} catch (Exception ex) { ____… ____System.exit(1); __} } 上記のように書くとreturnが無いというコンパイルエラーが出てしまうのですが、 例外をキャッチしたら処理を終了させたいのです。 どなたかよろしけれぼ助言をお願いします。
returnを追加すればいいんだよ。 System.exit(1); return; (もしくはtryの外) このreturnが実行されることはないけど、コンパイラはそこまでは見ない。
>>23 RuntimeExceptionでラップしてスローすれば処理は終了するよ
>>24 コンパイラは見ないかもしれないがIDEによっては未到達コードとしてエラーにするかも
以前、Visual Studioでコード書いてるときにExitProcess( )の後ろにコード書くと未到達コードの警告が出て感心した
ExitProcess APIの挙動まで考慮してるのか!と
余計ないこと言わんでいい。 言語仕様とmess detectorを同列で語るな。
言っても良いじゃん語っても良いじゃん ここは何でも言って良い掲示板 多様性なくして進化はない
>>27 いやコンパイラ通るコードでもIntelliJ IDEAを通らないコードとかあるから
(設定でエラーから警告扱いに下げるとコンパイルできる)
>>29 真にオープンソースなeclipseを捨ててOSS体験版商法のIntelliJに乗り換えたJava使いがそれを言うのか
>>24 >>25 回答ありがとうございました。
言われたように、catchブロックの後に、finallyを用いず、
return文(この例ではreturn 10;)を持ってくることで、解決しました。
・例外が発生しない場合…catchブロックは実行されずreturn文へ
・発生した場合…catchブロックに処理が移りexitメソッドへ
未経験者です Javaを勉強してみようと思うのですが開発環境?は何を使うのがオススメですか? 友人に聞いたらeclipseというものが良いと聞きました 本当でしょうか?
わたしも質問です Javaは普通の人はEclipse一択というのは本当ですか? いま流行りのVS codeというのもアリ?
それは一昔前orITドカタの話で、今はIntelliJが人気 コーディングの快適さだけで言えばVSCodeも優れていて、勉強や、他の言語をメインでやりながらたまにちょっとJavaも触るくらいならいいかもね eclipseは強制されない限りは特に選ぶ理由はないと思うよ
俺は10年以上Eclipse使ってきたけど昨年IntelliJに乗り換えたよ 最近はJava自体も言語仕様が拡張されたりと進歩が早くなってる IntelliJのほうがEclipseよりJava新機能への対応が早いのが素敵 Eclipseでコード補完してると匿名クラスになってしまう状況でも IntelliJなら補完候補にラムダ式やメソッド参照も出てくるので自然とモダンなコードが書けるようになってく Eclipseだとコード補完が弱く新構文を使うときは手書きが必要になることが多い
個人的な主観で嘘ついてもインテリアJとかっていうIDEがエクリプソンのシェアを上回ることは絶対にないぞ
存在しないものはシェア以前の問題だな インテリアJとかエクリプソンとか言って面白いと思ってるのかね
すでにIntelliJはEclipseのシェア超えてるよ
IntelliJはUltimateとCommunityがあってCommunityは無料 Webアプリ開発が少し制限されていてHTMLやCSSでのコード補完ができない このあたりはVSCode併用でもいいと思う Ultimate高いからねー
世界では2016年の時点でシェア逆転してるけどIT後進国の日本ではまだだろうな 俺らみたいなIT土方になりたいならEclipseの方が即戦力だと思う
起動も遅いし起動してからもいちいち遅いのがeclipse Netbeansの方がマシ。
とりあえずVSCodeというので勉強するのがとっつきやすいということですか?
>>46 VSCodeは初めの設定で嵌まる場合もあるから初心者なら素直にIDE使って言語の習得だけに集中したほうが良いよ
VSCodeは一発でJava環境作ってくれるマイクロソフト製のプラグインがあるから初心者にはいいかもしれないね
つまり人によって結構認識に相違があってこれが1番いい!これは絶対ダメなレベルで糞!というものは特に無い、裏を返せばどれを使っても学習は可能ということでしょうか?
嘘でも誇張でも糞でも何でもなく今までにエクリプソン以外のIDE使ってる現場に遭遇したことないからな 個人でインポテンツJ使うのは勝手だけど実際に仕事したときに エクリプソン初めて使います状態だと軽く死ねるからな
それは貴方がITドカタだからだ 質問者も人月業界へ就職したいのならeclipse一択 今後主流がIntelliJに移行するってことは多分ないから安心していい 勉強の目的次第だよ
それはEclipseに依存しすぎなのでは? 以前、リポジトリにEclipseプロジェクトの完了ファイルまで入れてる人がいて驚いた 普通リポジトリにはIDE固有の管理ファイルなんて入れないよね 今ならGradleかMaven形式でリポジトリ入れよう EclipseもIntelliJもGradle、Mavenをインポートできるので開発者ごとに好きなIDEを選べる IDE固有のプロジェクトファイルをリポジトリ管理してるから全員ローカルのファイルパスも揃えておくとか怖すぎる
>>49 初心者はそういう設定周りで躓きやすいから、初めは言語だけ学べる環境のほうが良いと思うで
>>54 スレチだがGitならプロジェクト単位のignoreで入らないようにすべき話題でIDEやエディタは関係ない話だな
>>57 せやったらもうクラウドでええやん
開発環境もワンポチで作れる
>>58 いやそんな簡単な話ではない
ソースコード以外にも依存ライブラリの定義とか残しておきたいものはあるからあえてEclipseのプロジェクトファイルをリポジトリに入れてたっぽい
ただJavaの文法等の勉強がしたいならeclipseでもintelliJでもVSCodeでもなんでもOK 仕事にするなら現場での活用シェア的にeclipseの使い方を学ぶのも込みでeclipse使用が無難ということでしょうか?
まあEclipse一択だろうな ただプログラミングを始めるまでに 適切なバージョンのインストール、使い方を 一通りやるのが初心者には結構大変かも web関係をやるんだとtomcatのバージョンの選択とか いろいろある
EclipseならAll-in-oneのプレアデスがいいね JDK同梱やTomcat同梱など用途に合わせてすぐに使い始められる 環境構築の手間を省きたいならこれだ
レス見てるとお前らってつくづく無能なんだなと実感するわ この手の質問者はどれがオススメなのかだけ教えて欲しいだけでなんなら自分の中でこれがいいかな?って言うのがあってそれの確認も込めた後押しを求めてるにすぎないんだわ それに対して明らかに初心者には伝わらないような専門用語であれこれ会話し出すあたり相手の立場に立てない無能なんだろうなと
違うだろ何見てんだ こいつが知りたいのは、友人の言ったことがウソかホントか判定してほしい、だ 結局他人なんて信用できてねーんだよ そんな奴はどうだっていいじゃん
近くに相談できる人がいるってのは大きな強みだからねえ 普通は友人がEclipse薦めてくれたらまずは使ってみるもんだ 質問者もちょっとアレなんだよな 念押し確認みたいなことばかりレスしてるし最初の一歩を踏み出す行動力がなさそう
だからその念押し求めてるやつにintelliJとeclipseのシェア具合やらGradleがどーたらtomcatがどーたらほざいてるのが論点ズレてるって言ってんだけどw ガイジ集団すぎて草
別に質問者のためだけにレスしてるわけじゃないし いいんじゃないの古株が好きなIDE語ったって 少し肩の力抜いたほうがいいよー
でもwebだと動かすときにtomcatが必要になるので 用語を知るのは重要だと思うぞ
友人がエクリプソン薦める このスレでも一部のインポテンツJ工作員を除いてほとんどがエクリプソンを薦める 質問者「ほんとにエクリプソン使っていいんですね?!使いますよ?!」 こんな低能質問者のキチガイっぷりを棚にあがて 「質問者が求めてることは〜(キリッ!!! 論点がずれてる!(キリッ!!!とかあ〜だこ〜だから〜(キリッ!!!!!」 とか馬鹿理論展開されておめーが一番のガイジなんだよ低能ゴミ
そもそも2回も3回も同じこと聞く暇あったら手動かせゴミって感じだしな マジレスするとゴミ未満なんだからIDEどうこうとか関係ねーし コンソールでハローワールド出してから質問しにこいアホ
痛いところ突かれたら質問者攻撃し出すとかほんとどうしようもねえなお前らw ザ・社会の底辺って感じw 会社でも雑に扱われてる底辺なんやろなあ可哀想に その鬱憤をこれから始めようとする初心者に当たり散らしてるとか救いようがなさすぎるわw
質問者というよりむしろお前みたいな低能ゴミカスを叩いてんだけどな 携帯で自演してまで書き込むとかどんだけ顔真っ赤なんだよアホ
友人とやらが本当に実在する保証なんてないだろ それにそもそも質問者が初心者とも限らない そこまで考えられないのは流石にガキだろ
>>68 君は質問者に何か言ってあげるつもりはないの?
質問には答えない他の回答者を叩くという立場は卑怯じゃないかな、こう答えるべきなんだという思いがあるなら自分でやるべきだよ、他の回答者に文句言うんじゃなくてね
・質問者と質問を切り離す ・質問に対する議論を行う ・質問者がそこから得るものがあれば良いよね ということだと思った 質問者の事を考えるべきだというのは気持ち悪い
>>61 EclipseがおすすめなのはSIerと呼ばれる会社に就職する場合だよ
SIerはプログラミング能力よりもサラリーマン能力の高い人向き
勉強したJavaスキルが仕事で末長く活かせる一方、新しい言語も新しいバージョンも使わせてもらえない
それ以外なら基本的にintellij ideaおすすめ
gradle+intellij ideaで環境設定してる人をそのまま真似るのがいい
オープンソースのライブラリを試したくなったとき、その組み合わせが一番楽
Eclipseだとプラグイン入れたり一手間加わる
Eclipseは昔の最強なので調べものをすると古くてもう使えない情報も多く出がち
VSCodeは汎用エディタだから特に思い入れがないなら今は強く奨めない
ある程度解ってる人向け
>>80 一応、Eclipseを擁護しておくとEclipseにもBuildshipというGradleプラグインが標準装備されてるからEclipseもGradleとの親和性に不足はない
俺もIntelliJ IDEA派だけど、お金を掛けずにJavaでWebアプリ開発したい人にはEclipseを勧めることがある
IntelliJ IDEA Community EditionでHTML/CSS書くのは辛いし他エディタ併用も初心者には手間になるからね
友人がEclipse薦めてるならEclipseでええやん なにか困っても聞きやすいやろ
友人が勧めたものを鵜呑みにしないところはセンスあるが 選択肢を試してみて自分で判断しようとしないところはセンスない
教えたがりのおっさんどもの意見も一応参考までに聞いといてみるかって感じの冷めた見方してるならセンスある
結論:どれでも大して変わんないから、手っ取り早く手近にあるのを使ってみる
>>26 ExitProcess( ) のプロトタイプ定義に __declspec(noreturn) って言うヒント情報が書いてあるだけ
ユーザーが定義した関数でも使えるよ
https://docs.microsoft.com/ja-jp/cpp/cpp/noreturn?view=vs-2019 >>90 こんなところでJava以外のこと教えてもらえるとは
勉強になったありがとう!
仕事でもプライベートでもEclipse使ってるけど IntelliJ使ってみたら快適すぎたw
エクリプスアンチガイジって一定間隔で湧くけどインポテンツJから金もらってんの?w
>>94 使ったみたらわかるよ
わからないんだったら君はEclipseにわかだね
>>95 草
金もらってる立場ならそら使わせる方向に持ってくわなw
>>96 だよね!
新構文が補完候補にさらっと出てくるのがいい!
>>98 ですです!
ラムダ式が導入されたのはJava 8だから6年前なんだけど
Eclipseはいまだにラムダ式の中でコード補完ができないことがあって
そのためにラムダ式ではなくて匿名クラスで書くことある
この面倒臭さ何?って思う
>>97 金欲しいけどね、そんな簡単に金もらえたら苦労しないよ
たぶん僕は君よりEclipseでコード書いてると思うよ
だから君よりもEclipseの限界を知ってる
>>100 根拠なしマウントマンw
しょうもない人生を歩んで来たんやろなぁ
>>101 君の方が根拠ないと思うけどなあ
僕はEclipseのここがダメだというところを具体的に示したよ
君はそうじゃないことを具体的に言ってないし僕が金もらってることの
根拠もないじゃない、根拠なしマウントマンは君の方だよ
君は具体的に説明できるほどEclipseを使い込んでない
恋と愛の違いみたいだよね 君はEclipseに恋してるだけ 僕はEclipseを愛してる 恋は幻想で、愛は現実なんだよ
質問なのですがSoketクラスを使ってTCP通信を行う際に、送信時のタイムアウトの設定はできないのでしょうか?
送信タイムアウトは設定できない なぜなら受信とは異なり送信操作はブロッキングが発生しないからだ 送信要求はTCP/IPスタックの送信キューに書き込まれたら復帰する つまりパケットが相手ノードに到達しなくても完了する操作なの だからタイムアウトがない
>>106 SO_SNDBUFの設定値を越えて送信しようとすると
ブロッキングI/Oならブロッキングが発生するよ。
Javaに限らずソケットの基本。
SNDBUFやRCVBUFによるブロッキングの時間はsetsockoptで
SO_TIMEOUTを指定することで制御可能。
ただ、バッファ要因ではないTCPのハーフクローズからのFIN消失による
F待ちのようなものには効かない。
おっと、java,net.SocketならsetSockTimeoutみたいなメソッドが あるんじゃないかな。
普通はAP同士でタイムアウト、シーケンス番号をやりとりするわな
>>109 setSoTimeoutって送信にも作用するんだっけ?
javadocにはInputStream.read()がタイムアウトするようになるとしか書いてないのだけど
>>111 そりゃStreamだから。
OutputStreamはSO_SNDBUFに引っかかる以前にStreamのバッファがあるんで。
SNDBUFに直接影響するような送信処理を作りたかったら SocketChannelからwriteで直接送信すればよいよ。
よく知らんけど、zero copy tcpってデバイス-ユーザー空間の間のコピー回数を削減するだけで、アプリ内にバッファをもたせるかどうかは関係のない話でしょ
javaのJITは結果が分かり切った同じ計算を省略してくれますか? 例えば public int f(int x, int y){ return x+y;//本当はもっと重たい処理 } //様々な場所でこの参照透過なメソッドが同じ引数で呼び出される f(1,2); f(1,2); f(1,2);
実行される回数の多いコードについてはJITがインライン展開してくれることはある ただ一般に、君のようなプログラマが速度への影響を気にするポイントってのは、ほとんどの場合「全く」実効的なパフォーマンスには影響がないんだ もちろんJITを作った賢い人達もそれをよく知っていて、最適化されるための閾値は結構大きい
finalでないpublicメソッドはいつオーバーライドされるかが確定できないのでその手の最適化は無理なのでは privateやfinalならワンチャン
>>119 なぜ?
インスタンス(実行時クラス)が決まれば何度呼んでも結果は同じだよ
コンパイル時ではなく実行時最適化だから不可能ということはなさそうだけど
instance.f(1,2);
>>117 JRuby のJIT では、100万回ループで、コンパイルされる
100万回ループに1秒掛かって、
コンパイルされると、1,000万回ループが1秒になる
アプリケーションが強制終了します。 exceptionでcatchしようとしても当然捕まらず、 throwableでcatchしようとしても捕まりません。 原因分からず困ってるのですが、何とか調べられませんか? 300万ループくらいのうちの、240万くらい(毎回ばらばら)で死にます。 outofmemoryerrorとかかなと思ったのですが、 それならthrowableでcatchできますよね?
>>122 Exceptionのインスタンス作れないくらいメモリが足りないとか
Linuxで動かしてるならOOM Killerにやられちゃってるとか
メモリの使用量監視すれば何が原因かの切り分けはできるんじゃなかろうかと
調査方法としてはシャットダウンフックでスタックトレースを出力してみるとか
メモリ使用量の調査はメモリが逼迫してるときはGCが頻発するんでGCログを出力してみたりとか jstatコマンドを使用したりとか
>>117 メモ化すればいいんじゃね?
たぶんキーがx,yのHashMap程度でいいだろきっと
>>122 Kill シグナルみたいな、終了処理ができない強制終了とか、
非同期処理とか、UI/非UI スレッドなど、
コンテキスト・文脈が異なるスレッドのエラーだから、catch できないとか
>>122 IDE上でプロファイラを見ながら実行してみたら?
メモリリークが原因ならメモリ使用量が単調増加していくから確認できる
122です。 何とかしてメモリを増やしてやってみたら、動きました。 ご考察の通り、インスタンス生成出来ないくらいメモリ足りなかったのかと思います。 何でもcatch出来ると思ったらダメですね。 ありがとうございました。
javafxをandroidで動かす場合、fxmlで作ってないと無理とかある? コード直書きでも動かせるんだろうか?
java.io.File クラスでファイルが存在するパーティションの容量や空きが分かるのは良いのだが、 パーティションがいくつあるのかとか、それぞれのパーティションへのパスは分からないのだろうか? OS固有の外部コマンド動かせば分かるのは分かっているが、Javaの標準的なライブラリでそういうのはない?
>>132 FileSystems.getDefault().getRootDirectories().forEach(System.out::println);
>>131 JavaFXの時点でアクティブユーザーは日本で100人いるかどうか
更にAndroidでとなると国内では君1人かもしれない
日本で質問して答えが返ってくることを期待してるなら今すぐやめてXamarinにでも乗り換えた方がいい
質問なんですが、Progateでjavaの勉強をしていて、乗り物をある人間が所有している状況をプログラムで表現しようとあるのですが、 なぜ画像の上から2行の作業をする必要があるのでしょうか?
よろしければアドバイスお願いいたします🙇♂
>>136 そうしないとフィールドにインスタンスを持てないからでしょ
自分の車に連絡先を書いとくようなもんだろ。 もしも連絡先が書いてなかったら(車クラスが人クラスの変数を持ってなかったら)、 車を受け取った人はオーナーを調べるのに別の手段を用意しないといけない。 逆にオーナーを調べる別の手段を用意できるなら、他の解もある。 例えばハンバープレートからオーナーを引ける顧客管理表をもってるとか。
>>138 わかりやすいアドバイスありがとうございます!
中々オブジェクト指向はイメージがしにくかったので助かりました😂
>>134 おお。そっちにあったのか。ありがとう。
ググってもググっても見つからなかったのだが、単に需要があまりなくて書いてる人が少なかっただけってことだな。多分。
>>136 画像の上から2行って
public static int count = 0;
じゃねえの?
それともVehicleのcolorとnameか?
クルマの色と、nameはなんだろな
ヴィッツとかヤリスとか入るのか
それとも所有者が「轟天号」とかカッコイイ名前を付けるのか
船だったら明らかにナントカ丸って命名してるだろう
乗り物なんだから船でもクルマでも馬でもいいんだから馬の一つや二つ命名するじゃん
Progateでプログミングの勉強始める奴って総じてアホだと思ってたけどまさにそれを証明するかのような質問やなw センスないからやめた方がいいよ 勉強に費やす時間でシコってる方がまだ有意義なレベルで才能ないわお前
まず質問がどこの事言ってるかもわからんし このわからない状態で勝手にエスパーして答えてる馬鹿も酷い 質問スレはこういう馬鹿スパイラルを起こす馬鹿が絶対いなくならんのよな ホント見ててイライラしかしないわ
クラスの作り方でハマるのは普通に初心者あるあるだろ。 ググれカスしか言えないならコメントする意味なくね?感想だけならチラ裏でやれや
イライラするだけのスレだと感じたらもう見るのは辞めようと思うのが普通の人 歪んだ正義感でバカどもを正してやるのが義務と信じ誰一人喜ばない努力を続けるのは不幸に囚われた人 一番辛いのは実社会で誰にも相手にされずネットで罵詈雑言を吐くことで人との繋がりを保とうとしているケース もしそうなら社会的支援に頼った方がいい
いっぱいいるもクソも
>>146 自身が「歪んだ正義感でバカどもを正してやる」と自己紹介
それにすら気付けないんだからホントは誰が病院行くべきか分かるだろ
◯◯ちゃんも同じようなことしてるんだからボク悪くないもん
ってのは論理的思考ができない人が陥りがちな詭弁
その理論ではせいぜい俺も
>>148 も同類でみんなで病院という結論にしかならない
質問・相談スレに粘着してググレカスを言い続けるやつの抱える闇が軽くなる訳ではない
ワッチョイの見方すら知らん奴にどうこう言われても・・・
「俺も
>>148 も(プリンと)同類、みんなで病院」と書いたんだが分からなかったか
>>141 で一人ズレた回答してるあたり、読解力のないやつだな
先生にもっと落ち着きましょうと叱られただろ
このプリン連呼してるキチガイは 別の初心者スレで自分がボコボコに叩かれてからずっと根にもって喚いてんだよね こんなスレまで追っかけてきて荒らしてんだから低能が変にプライドもって拗らせるとこうなる良い例 普通にスルー推奨
まぁこの低能キチガイに限らず文章すらまともに書けない系のアホって多すぎなんだよなぁ ほんと困ったもんだな
>>159 ありがとうございます、初心で VRMLをテキストエディタで書くところから初めてたので
VRMLファイルをそのまま流用しようと思い
Java 3Dでvrml97.jarのローダーを使いました
背景にwrlファイルを読み込み
アバターはobjローダーで簡易な3Dワールド構築がしたかったのですが、JavaからOpenGLの
使い方がよく分からず、難しいです。
>>160 ありがとうございます調べたところ
ライトウェイトゲームライブラリーというものだそうですが、
アマゾンなどではLWJGLの書籍が見当たりません、日本のサイトも見当たらなくて
使い方などの分かりやすいサイトなどがあればよろしくお願いします。
JavaFXはウィンドウデザイン向けでしょうか?
グラフィック部が別スレッドらしいですね
これも開発が外部に移ってるみたいですが
簡単に 3Dも出来るのでしょうか?
lwjglとjavafxを混成できるのかも
wrlファイルやobjファイルが読み込み出来るのかもよくわかりません
国連から表彰されても引退なの?個人アプリ開発の世界は残酷だ。
https://appmarketinglabo.net/leorivas-interview/ 「約3年で1,180万円を稼いだ、いま広告収入は月100万くらい」地味だけど寿命は長い「電卓アプリ」実際に効果があった5つの施策。
https://appmarketinglabo.net/calculator-1100man/ パチスロ生活しながらアプリ開発で1,500万円稼いだ「ダメ人間」が語る、ソシャゲとパチンコ
パチスロの客層融合説と、電卓アプリ作者が語る3年の収益推移
https://appmarketinglabo.net/pachislotapp-damehuman/ 1日に3〜5万円だったアプリ収益が「プロモーションで大化け」数百万円を稼げるように。
AppLovinが語る「ハイパーカジュアル」の可能性と成功のコツ。
https://appmarketinglabo.net/hypercasual-applovin/ なぜそこにアラブ人。スマホゲームに飢えた「アラブの課金王」国境を越える。そこに
「存在しないはずのアラブ人」が欧米のアプリストアをつかう真実。
https://appmarketinglabo.net/arab-mobilegame/ 約4年でアプリ売上1億円。副業からスタートしたアプリ開発会社「AppStair」が
730万ダウンロードを達成し、メタップスに買収されるまで。
https://appmarketinglabo.net/appstair-ma/ java 15でzgcが実験段階終わるけど java 11もアップデートされたりするんだろうか? LTSだしそうして欲しいんだが
常識的に考えてするわけないだろ 変なアップデートに怯えずに安心して塩漬けするためのLTSなのに
jdk11のログみてたらshenandoahのbackportというコミット履歴があったから たぶんshenandoahはjava15相当のが来てる
jdk8にもbackportされてるけど一部のJDKのみ採用してるようだ
メソッドのオーバーロードで あるものは返り値返さずあるものは返り値返す ということはできますか?
>>169 戻り値だけを変えてオーバーロードすることはできないっす
引数の数や引数の型を変えないとオーバーロードはできない
戻り値を変えるといっても狭める(親クラスの戻り値クラスのサブクラスにする)ことしかできないんじゃなかった? まったく関係ない戻り値型にできたら多態性が失われる
>>174 あ、そうですね
オーバーライドの話だとばかり思い込んでしまいました
ご指摘ありがとうございます
むしろオーバーロードは戻り値を揃えるために使うものと考える。 一番分かり易い例がファクトリ。
同じ名前のメソッドを定義できますよってだけで戻り値は好きにしたら良いよ 同じになることもあれば異なることもある
int同士のmax関数とdouble同士のmax関数 もし戻り値を変えられない制約があったらイラっとするじゃん?
max関数はジェネリクスでは難しいかも ジェネリクスが使えることもあるだろうけど
浮動小数点数と整数は比較の仕方から違ったりするから 処理を共通化できるならジェネリクスでそうじゃないならオーバーロードで というわけ方になるのだろうね
為替レートをデスクトップに表示できるアプリはjavaで作成できるんでしょうか?SBIからリリースされていた「カベプラ」のようなアプリです
ブラウザに表示させたいのか、ウインドウを独自で開けて表示したいのかによる。 どちらも可能だけど
>>184 java作成できるんですね、ありがとうございます
ウィンドウ表示で画面の端に置いておきたいのです
>>180 java.lang.Mathが実際maxを始めとしてそういうオーバーロードだらけだよ
既に言われている実装の違いはJDKのソースで見れる
演算やロガーみたいに激しく高頻度で呼ばれるメソッドの場合、ボクシングのコストを嫌って各種プリミティブのオーバーロードを揃えることが多い
もっとJavaジャバしたいのにどんどん頭から抜けていって全然泳げません もっと深くためるにはどうしたら良いですか?
本人の記憶力が乏しいのは誰かに聞いて治るもんじゃない
>>191 なるほど滝行ですねありがとうございます
>>192 もっと沢山水を浴びないとダメなんですね
Java経験者と未経験者とではKotlinへの学習効率が大きく異なると聞いたことがあるのですが、 Kotlin経験者も、Kotlin未経験者に比べるとJavaの学習効率は高くなりますか?
未経験でJavaエンジニア目指す場合じゃんけんゲームみたいなしょぼい作品はgitにのせない方がいいの?
>>194 もちろん
必要な知識の一部が共通だから、必要な学習量自体が少なくなる
効率はKotlinを先にした方が多分悪い
>>195 のせていいよ
友人間のプライベートな動画をYouTubeにのせていいのと同じ
どうだろうなあ 自己PR用のポートフォリオとして使うならくだらないものは載せないほうがいいと俺は思うが 実際はgithubアカウント持ってるエンジニア自体が少ないからね 「なんだこの程度のものしか作ったことがないのか」 「少なくともgithubアカウント作るくらいの意欲はあるしgitも使えるんだな」 良くとられらるか悪くとられるかは相手次第だろうか
あとはgithubとSNSの区別が付いてない馬鹿もいる 「こいつを雇ったらうちの資産をネットにアップして晒されるかも」みたいなトンチンカンな判断する人もいるよ だから俺はネットでの活動をリアル社会で繋がりのある人に話したり自慢したりはしない
実務未経験でも掲示板とかTwitterの模倣サイトみたいなの作らないとプラス評価にはならないのかな
>>199 逆にベンチャー系だとソースだけ欲しがったりするから、公開するのも考えものだったりする
Vue vs React vs Angular Part.3
http://2chb.net/r/tech/1560333895/586 プログラミング未経験のポートフォリオ作成動画
Ruby on Rails, Bootstrap, Github, Heroku
Javaって例外遅いんですか? Goみたいにエラー、エラー判定、エラー、エラー判定… って繰り返して巻き戻していくより早い気がするんですが
遅くないよ 何百万回も実行したら数ミリ秒の差は出るかもしれないというレベル ちなみに例外が遅いと言われていたのは例外機構ではなく例外インスタンスの生成な 例外インスタンスが保持するスタックトレースを作るのが重いと言われていた(昔の話)
遅いよ。超遅い。 エラーコードによる判定が1msで終わるところを例外だと100msくらいかかる。 10億回試行で。
paizaだと例外の方が時間がかかったけどローカルでJITコンパイル切って実行したら逆の結果になった
これはわからんな
https://paiza.io/projects/IcXMFru7MVKOOVFx7YMzSQ >>211 208が書いてるように、遅いのはスタックトレースなんで、例外が発生しなければ大して遅くならない。
ありがとうございます ただ例外が起こらんときのことが知りたくて 戻り値方式だと 関数呼び出すたびに呼び出し元で毎回エラー判定いるから これみたいに、エラー起こりまくるときに例外使うと遅くなるだろうけど エラーがめったに起きないとき 戻り値方式で毎回エラー判定処理入ったら その判定分通常処理が遅くなったりしないかと
ってあれ? これもINTEGER_MAXまで例外起きないのに遅いのか
クラスのロードで変な差がついてんじゃね?と思って2回回したら 2回目のほうが遅くなった そんな馬鹿な…
testExceptionとtestResultの実行順序入れ替えたらtestExceptionのが早くなった どういうわけか1回目の計測ちゃんと結果でてない
遅い遅くないって、10億回繰り返した後の100ミリ秒の差に一喜一憂してるの? 冗談やネタじゃなくて? なお例外が出る場合は10万や100万throwくらいのオーダーで有意差が出る模様
>>216 vmのパラメータに-XintをつけてJITコンパイルを止めると良いかも
実際に動くときはJITコンパイルは行われるだろうけどコストを調べるだけなら
速度よりは書いてるコードにどっちが向いてるかで選んだか良いかも、基本例外使うけどたまにEitherオブジェクト使った方がきれいに書けることある
2回目以降のほうがおそくなるのPaizaのせいかと思ったらローカルでもなった ほんとに特殊なコンパイルされてるのかなあ 俺の常識がこわれた
CDIでAmbiguousResolutionExceptionが発生した場合ってどう対処すればいいんですか? 同じインターフェースを実装するクラスが2つあって、片方は自作のクラスなんですが、もう片方はライブラリに組み込まれていてコードの修正ができません クラスのクライアント側もライブラリ内なので手出しできません 自作のクラスを優先して使わせたいのですが可能でしょうか?
jdkの内部実装を学ぼうと思ってるんだけど 良いサイトとか本ある?
外クラスから内クラスのprivateメンバが見れるのはなぜですか? 超論理的思考によるとどう考えても理論に欠陥があり矛盾してる。 みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
カプセル化の有害性、オブジェクト指向は愚かな考え
http://2chb.net/r/tech/1592491656/ こっちでやってろ
ところで継承したサブクラスをインスタンス化したときは メモリ上にはスーパークラスの情報も存在するのですか? だってsuper.xxx、とスーパークラスのオーバーライド前のフィールドやメソッドも使えるはずだし。
>>226 クラスさえもメンバの一種と考えれば良い
private可視性といえばインスタンスを跨げるのも違和感あるよな MyClassにprivateフィールドnameがあるとき MyClassのインスタンスaからMyClass bのnameが見れちゃう 人間にはチンポついてるじゃん でもaさんがbさんのチンポ見れちゃまずいでしょ aさんが見れるのは自分のチンポだけってほうが自然じゃない?
最新のpleiadesでjframeをやろうと思ったらエラー出ました openJDKだからだと思うんですが何をしたらswingなどが 使えるようになりますか? system.out.printlnはうまくいったのでコードの書き方には 問題はないはずです
Javaのprivateは同じソースファイルからなら見えるの意だな ひとつのソースは巨大すぎず、また同じ人が上から下まで書くだろうという前提に立つと、アクセスしたくなければ当人が判断してアクセスしなければ良い コントロール下にあるなら自由にさせろという、合目的的な線引きの仕方 小さく完結してるならprivateというコンパイラ支援を受けるメリットが少ない 一方、後から手を入れる必要があるときは勝手にpublicに書き換えられたりgetterを増やされたりまで注意が必要 それはもはやスコープ指定の仕事じゃない
>>232 >>1 質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。
エラーメッセージくらい書けばよかっですね すみません プロジェクトを一旦削除して バージョン(1.8)のjdkに変えたら動きました
Javaを始めたばかりの初心者です Androidアプリを開発してるのですが このような動作は出来るのでしょうか? 動作A(UIの読み込み&操作等) for (int i = 0; i < forNum; i++) { 動作B インターバル(数秒) } の用にしたいのですが、 インターバルにSystemClock.sleep()を使うと動作A(UIの動作)まで止まってしまいます。 どうにか動作Bのみを数秒待機させる方法はないのでしょうか?
>>239 メインスレッド(UIスレッド)でスリープするのは禁じ手なので、threadなりasynctaskなりを作ってその中で動作Bの処理をする。
終わったら必要に応じてメインスレッドに通知する。
詳細
https://developer.android.com/guide/components/processes-and-threads?hl=ja >>241 >>242 ありがとうございます!
明日試してみます
>>244 System.getProperty("java.version");
10base-Tの10はテン 100base-Tの100はヒャクだぞ
>>252 ダメだ。
アルツハイマーでもこれくらい分かる。
数独のプログラムで3×3マスの部分で被りがないか判定するにはどうすればいいの?
配列[行][列] 同じ列の行なら、 ary[0][0], ary[1][0], ary[2][0] 同じ行の列なら、 ary[0][0], ary[0][1], ary[0][2]
そのやり方だと9つのブロックに名前つけて9通りのfor文を用意する必要があると思うんだけどもう少しスマートなやり方ないかな?
Set<Integer>に突っ込んで要素数が8以外だったら重複してる
>>256 行や列と同じでブロックも要素数9のコレクションとして表現すればいいんでは?
javaだと少し面倒くさそうなのでpythonの例で
https://ideone.com/9vaTYC 9X9の配列から縦一列、横一列、3X3のブロックを取り出すルーチンが大事やで。
mementoというAndroidのDBを使っています 主キー(プライマリキー)の設定がないようで javaで書くしかないようです 過去のレコードで最大の物に+1ずつしていく、というのはどう書くのですか?
Set<Integer>に一票だけど、本質的には要素のソーティングだと思う。配列とかソーティングをうまくすると、Set<Integer>より少し速くなるかも。
俺のレベルだと switch(row){ case 0: case 1: case 2: blockrowstart =0; break; case 3: case 4: case 5: blockrowstart=3; break; って分けていく案を出すのでやっとだった Set<Integer>でどうやればいいのかわからない というか未経験でIT業界入って1ヶ月もたたないうちに挫折しそう
数学的に抽象化して考えれば、写像であることは明白。 写像が分からないなら、大学で写像と集合論を勉強すれば?
行列の基本法則も知らなかったのにずい分偉そうだな。
ビンソート使って int[] b=new int[10]; for(int i=0; i<a.length; i++){ for(int j=0; j<a[i].length;j++){ b[a[i][j]]++; }} ってやれば、この後b[1-10]のチェックをしても、配列アクセス18回位で重複検出できる。
ラムダ式とか考えたやつは死ねばいいと思うんですけど 使ってる方たちはやっぱ難しい構文使えてるおれカッコイとか思ってるんでしょうか?
>>272 軽薄なラムダ野郎かそうでないかを識別する良い質問がある
「ラムダ式で不動点コンビネータを記述できる者のみラムダ式を使うがよい」
>>272 良いソーティングのプログラムを作った後で、比較の仕方をちょこちょこ変えたい時、どんな方法を取る?
俺もラムダ式あまり好きじゃないなあ 書くのは楽なんだよIDEの補完機能があるから だけど後で見直したときに変数名だけで型が分からないからコード読みにくいなあって思う 変数名にマウスカーソル合わせればIDEの機能で型がポップアップ表示されるけどね コード読みながらそんなことしててバカらしくなっちゃった
>>274 ただのStrategyの話で、それがラムダかどうかなんてどうでもいいことじゃん。
VBおじさんやCOBOLおじさんがオブジェクト志向なんて分かりにくくなるだけだ必要ない!って怒ってるのと同じ構図? 卵から孵ったときに最初に何を見たかだけの域を出ないなら微妙な話 ストラテジーのような頻出のデザインパターンがスッキリ簡潔に書けるだけでも嬉しいじゃん 慣れてないとStreamでビックリしちゃうし読むときにペースが落ちると思うけど、それでもifとforで書いてあるよりステップ数も圧縮されてるんだから別に損してないと思うぞ
実は根深い問題なんだよなあ 高階関数を活用したプログラミングというのは、企業のプログラミング研修やIPAの試験など、現在の日本のプログラミング教育システムでは基本的に全く出てこない概念なんだよ VBおじさんやCOBOLおじさんがまともな構造化プログラミングやオブジェクト指向プログラミングができないのは「不勉強な馬鹿」で片付くのだが、 高階関数がわからないのはそもそも教育システムに無いからという大義名分があって、仕方のないことだとも言えてしまう
JavaScriptやってりゃ嫌でも覚えるだろ んで今どきJS教えない会社なんて存在せん
必要に応じて高階関数を自作できたり 関数を受け渡ししたりできるかどうかって 言語に関係なく脱初心者の重要な試金石 JavaはまあアレとしてCなら関数ポインタ、C#ならDelegate 使ったことないけどCOBOLにも関数ポインタはあるらしい
delegateはJavaのメソッド参照じゃないですかね
>>281 いやー、高階関数の概念無いと
プログラム作るの大変だと思うよ。
でも、言語によっては無理なのかなぁ?
私が知る限りでは・・・それができない言語を知らない。
私が知らないだけかもしれないけど
高階関数って言うとあれだけど、GUI的にはただのリスナでしょ? いうほど習わないかな…
Java8以降は簡潔に高階関数を表現できるようになっただけで Java7以前のJava脳でもインターフェース使って高階関数と同等のことが実現できるから それを理解して使いこなせてる人はだいたい初心者の域は脱してる 抽象度が1つ上がるからJSみたいな言語を使ってたとしても初心者のうちは少し難しい
代入文に伴ってコードが呼び出される事なんてないよね? 代入文実行直後にコードが呼び出されてるようで、そのコードで例外が出て、 例外発生個所の周辺ではブレークポイントが無視される。 スタックトレース出るけど代入文から呼び出されてる事が書かれてないし これはEclipseのバグか?
v1 = v2 みたいな単純な行で、実行直後に別のメソッドが呼び出されて例外が出る。 ステップ実行で確認したし間違いない。 その例外のスタックトレースもおかしいし クラスファイルが破損してるとかそういうバグが出ているとしか思えない
大学で学ぶ物理を板書1枚にまとめてみた
VIDEO 物理の研究分野を板書1枚にまとめてみた
VIDEO 理学部と工学部の違いとは?
VIDEO ;t=80s
大学と大学院の違い
VIDEO 高校と大学の積分は決定的に違う?微分積分学の基本定理は実はすごい!
VIDEO ;t=475s
数学にはどんな研究分野がある?数学の世界地図を一枚に描いて紹介してみた!
VIDEO たぶんどっかのブレークポイントプロパティにコードが書かれてて バグでそのブレークポイントの実行箇所がずれてたとかか
ビルド後にソースを編集したり切り替えたりしたとき、ソースとビルド結果の行がずれることはよくある
>>272 そりゃ後から拡張して使えるようにした言語だから余計にそう感じるだけでは?
ということで Kotlin もよろしく。
Kotlinとか考えたやつは死ねばいいと思うんですけど 使ってる方たちはやっぱ新しい言語使えてるおれカッコイとか思ってるんでしょうか? せっかくAndroid開発にJavaをマスターしつつあるのに、また変な言語が主流になったらその学習コストがでかすぎる。
PHPでいいのにアホが考えたRuby WindowsでいいのにMAC Wordでいいのに一太郎 AndroidでいいのにiPhone かな入力でいいのに打つ回数が無駄に多いローマ字入力 アホのせいで頭のいい人が無駄にコストを背負う。
Kotlinを考えたのはJetBrainsだぞ 死んだらIntelliJ IDEAがなくなるだろうが!
初めてのアンスタからKotlinを始めて3日目くらいから、コレは楽チンて感じだったよ、 型宣言の書き方は慣れないと気持ち悪いけど 各種言語良いとこどりして記述の簡略化この流れいいんじゃないかな? 本格的に仕事で使えないだろうけど Kotlinが主流になって欲しい今日で6日目
初心者だから解説サイトとかよく見るけど Kotlinしか載ってないことが多い Kotlin読めないから難しいわ
>>300 自分も初めて6日目の初心者なので
何処で読めなくって詰まるのかが知りたいです
何処でつまらなくなりますか?
Kotlinにおけるクラス、プロパティ、コンストラクタ、データクラス、シングルトン (1/3)
https://www.atmarkit.co.jp/ait/spv/1804/02/news009.html このページくらいの内容なら分かるけど次の
SwiftとKotlinの構文比較 (2) 〜クラス、列挙体、構造体、プロトコル、拡張
https://qiita.com/y-some/items/286fb15fe8e0bd9aa5ef こんなページになると何やってんのかさっぱりちんぷんかんぷんです。
結局後ほどの保守運用を考えるとScalaとかKotlinを使うぐらいならJavaかGoが良いよねってなる ScalaとKotlinはとにかく使える人が少ないから誰も改修できない属人化うんこシステムになりがち
Scalaは既に死んで負債化してるしなあ Kotlinは事実上Android専用みたいなもんで寿命短いからまあいいとしても、今だとRustあたりはやばそう
Androidでよく使われるのならじわじわとKotlinプログラマー人口は増え続けるということだよ。 まあでも大多数の他の人と同じのを使いたいみたいなのはいかにもヘタレで保守的な日本人って感じだよね。寄らば大樹の陰って感じか。そして思い切り牛後となると。 「俺が徹底的に使いまくって世界中に広めてやる」ぐらいの勢いのあるやつは居ないのか?居ないんだろうな。まあ日本に居なくても他の国にいるから良いんだけども。
徐々にFlutterに移行してるからKotlinはやばいよ
>>305 アホ。
わたしはすでにマルチプログラミング言語sのマスターだから
これ以上中途半端な言語が増えてよけいで無駄な学習コストを消費したくないのだよ。
Java経験者がKotlin覚えるのなんてコストのうちに入るのかな 言語仕様を覚えるコストは微々たるもので、大変なのは膨大なクラスライブラリ群を覚えることだと思うんだが 英語の基本文法は簡単に覚えられるけど単語の学習は果てしないような話で
ラムダ式は多分消滅する 数年後に迷惑な過去の遺産になるよ システム統括する開発するメンテする運用する立場からしたらこんな迷惑なもの無い 理解しにくく可読性も良くない、一部のPGだけがマスターしてる構文なんて そんなもの使わないでくれって思うよ
JSで画面まわりのみで使うならともかく ビジネスロジックでそんなもの、冗談でしょ
簡単なロジックを簡単に書けるってだけじゃん マスターもクソもないよw どんだけレベル低い会社なんよ
カッコイイなあ さぞかし優秀なエンジニアが揃ってる会社なんだな 是非日本のIT業界を背負って立って貰いたい いい会社に在籍できて羨ましいなあ
ラムダ式は微妙だけどOptionalは良いと思う そんでOptionalを上手く使うには結局ラムダ式も必要なんだ
ラムダ式の必要性はコーディングしてたら分かる。 10台の頃の俺でもクロージャの必要性を認識してたからな。 それが分からんってどんなレベルなんだと。 一方でちゃんとエラーメッセージが出ない場合があるのでまだ周辺ツールが成熟してるとは言えない。 あとシリアライズ・デシリアライズもしないほうがいいからコーディング上の注意点は多い。 なんにせよラムダ式は必須だし、ほとんどの主流言語で採用されつつあるんで Cでもクロージャ書くライブラリあるし 自然消滅なんてとんでもない。 Javaの流行推移をみるとJava8実装後に急激に利用者が増えてる。 ラムダ式実装でようやくまともな言語になったという評価を得て、かろうじて今も生き残ってるんだ。 ラムダ式が無かったら見捨てられてただろう。
>>310 わかりました。つまりあなたはこう言いたいのですね。
「ぼくには難しくてわからない」
お前らってなんで煽りあわずに普通に会話できないの?
>>310 大抵のプログラミング言語には備わってる機能なのに今更消えるわけ無いだろ。無学さを恥ろ
javaの言語仕様はモダン言語の中で最もシンプルかつ洗練されたうちの一つなのにそれすら満足に扱えないとか低能にも程がある
でも最近Javaも無駄に複雑化してきてると思う varも良くない。Recordもまあ要らんかな。 var v = method(); これだとvの型がぱっと見分からん JPMSも面倒なだけで何の役にも立たないし 日付クラスは無駄にごちゃついてるし SwingとJavaFXでGUIフレームワーク乱立感あるし これが最もシンプルだっていうなら、簡単に超えれる
Javaで型推論使うぐらいなら動的型付け言語使うわ
var i = 0; これはint iなのかInteger iなのかどっち?まあintか? でも複雑な型推論が行われてIntegerとして使われてる部分があればIntegerなのか? var使わんからわからん。
やっぱvarあかんな var i =0;//int var i2 = getIntegerMethod();//Integer var i =0;//int i = getIntegerMethod();//int
なんでSEは黒本があるのにEEの試験対策本はないの?
推論された結果が格納されるだけで何でも入る箱じゃないのだから何もおかしくないだろ。 あとvar i = 0のほうはリテラル0の型を考えなよ
>>317 JSのラムダもJava8のラムダも何年か前に使ったがJavaのラムダの部分は忘れた
調べ直す気は無い
>>319 Java自体はレガシー言語だ。何が無学さを恥ろだ
よく恥ずかしげもなくそんなこと言えるな
Most Popular Programming Languages 1965 - 2019
VIDEO 1.Python
2.JavaScript
3.JAVA
1.モデル 2.ビュー 3.コントローラー の棲み分けな感じ
>>323 これであかんかどうかはわかんないんだけど、
var i3=getIntegerMethod()+1;
の時は型はどうなるの?
int?
このくらいはいちいち確認しなくてもわからないとダメだろ。
相性悪いねえ それでIOExceptionの非検査例外版とか追加されたし なんだかなあ
やっぱ相性、悪いよな 検査例外さえなければ、もうちょいマシな言語になってたかと思うと惜しいね
>>330 int
だからちょっとコードをいじって+1とリテラルを足したり
intを返すメソッドgetIntMethod()の返値を足したりすると
varの型が変わっちゃうわけ。
じゃあ、それを回避するためにどうするの?とか
varのせいで余計なテクニックが生じてくる。
これってボクシングによるコーディング上のメリットを潰してない?
俺はvarが無い言語を使いたい。kotlinもvarに汚染されてる
そういう時は明示すればいいだけじゃん。 何言ってんだか。
varしか使っちゃだめな呪いでもかかってるのかな?
いつもワンパターンでやった方がコーディングが楽だから varが常に使える汎用的なものでないなら 「この場合は先々でこういうコードになるからvar、この場合は型明示」 というような設計判断が必要になる。そういうのがコーディングを遅くする。 最初から型明示で一本化しておけば問題に遭遇しない。
intとIntegerの違いを過度に恐れるのはぬるぽが怖いからだろ Javaの限界だな 結局Kotlin使いたいという結論になる
Javaはローカル変数まわりでしかvarを使えない だからあまり混乱しない しかし素人集団が作る業務システムだと5000行のメソッドとかザラにある そういう害悪から徹底排除していきたい
Integer + intやInteger + Integerでintが返されるのが以前からのJavaの仕様じゃないの?
>>344 int iと型明示されてたらそうだろうけど
var iだとどっちになってるのか分かりにくいという事
そもそもプリミティブだけじゃなくて
var i = method();
これは常に分かりにくい。IDEが無いと読めない
でもgithubとかgitクライアントとかでIDEの支援なしでコードを読む場合がある
varの良さは「何も考えずとりあえず型をvarにする」
という意識上のコストカットにあるはずだけど
そんなに楽に使えるものじゃない(使用場面を吟味しないといけない)という印象
>>343 マジでそんなんあるの?
ひとつのメソッドで5000行ってやばくないか?
>>343 リファクタリングしがいがあるじゃないw
int i = method() なんてのは実際にはまずない 実際にはこんなのが多い Employee employee = getEmployee(employeeId) くどいな var employee = getEmployee(employeeId) 少しマシになった
>>346 すまんザラにあるは言い過ぎた
1メソッド5000行はまれにある
Employee employee←こういう無意味な変数名は避けたい Employee updated = EmployeeStore.get(employeeId); //updatedの更新処理 ... EmployeeStore.update(updated); これで概ね意味のある名前になってる。
>「何も考えずとりあえず型をvarにする」 何言ってんだか。
>>345 var i = Integer + Integerでもiの型はint
varと関係なく算術演算の仕様だから
https://ideone.com/DY0QvE チーム全員が仕様を理解してる環境にいるなら
var i = getInteger() + 1;のようなケースでvarを使ってもいいと思うし
そうじゃないなら使わないよう規約で決めとけばいいだけ
規約で決めとけばいいというけど Java案件においてvarが使われてるか、Javaプログラマーがvarに慣れてるか ばらばらになっていくからJavaエコシステムの悪化になる。 varを使って何かメリットがあるならまだいいけど、何もないように思う。 「冗長な記述がなくなって可読性が上がる」という主張が全く分からない。
var使いまくってるけどわかりにくくて困ったことはあまりない コードがスッキリして見通しは良くなった気がする var便利だよ、みんなも使いまくったら良いと思う
varは簡単なコードが簡単に見えるっていうのが良いよね 大したことやってないのに長々とクラス名が書かれてあたかもすごいこと やってるように見えるのはイヤ クラス名を省略したらわかりにくくなるしvarは便利
意識の高いJava使い達はローカル変数の型にもインターフェイスを使うべきと主張し、他言語の型推論を見下していたわけだけど 梯子外されちゃってこれからどうすんだろうね
ソースコードにvarが残らないほうが良いよな 型推論って静的に型が決まるじゃん ならIDEでvarって入力したらそのときに型を解決してEmployeeになれば十分だったんじゃないか? 入力の手間も省ける 結果のソースコードの可読性も損なわれない IDEが当たり前の世界なんだから、言語としてコードを短く書けるということにこだわり過ぎないで欲しいな
認知バイアスの一種に、人間が新しい事実に直面したとき、それまで持っていた考えに固執してその考えを徐々にしか変化させられない というのがあるからねー、それを乗り越えるのは実際に体験してみることなんじゃなかろうかと 新しいことを取り入れることをやめると時代に取り残されるだけだから 新しいものは使いまくってみるのがいんじゃないかなーと思う
>>357 それは新しい発明だな
メソッドを書きあげたらメタコンパイルで
varを使ったコードからvar無しコードに変換する
良いアイデアかもしれん
ある種のメタコンパイルを駆使する事でプログラミング言語の在り方が変わるかもしれん
>>358 一番Javaのスレらしからぬレスだな
こういうメンタルの人たちはそもそも言語選択の段階でJavaなんか浮かんでこなさそう
Scalaとかkotlinの場合は、valファーストみたいな考え方が定着しているが、 varしかないJavaだと定着しにくいわな。
KotlinのvalはJavaだとfinal付けた宣言と同じかな?
Javaエンジニアの転職用のおすすめの成果物ってなに?
>>366 要件定義から行う仕事なんてしたことも見たこともない
超下流のコーダーさん?
兄ちゃん、なんで要件定義書とRFPを混同してしまうん?
>>367 要件定義はユーザの仕事
請け負いで丸投げされてるん?
要件定義は開発者がお手伝いをすることはあってもあくまでもユーザの持ち分だよ、丸投げされて自分の仕事だと思ってるだけじゃないかと
SIジジイのエクセルのお話なんてどうでもいいから言語の話してよ どうせJava1.8すら使えない古臭いとこなんでしょ
そんな認識だから老いたら使い捨てにされるんだと思うよ? 小さい仕事でも、ユーザの漠然とした妄想から完成させることを学んだほうがいい。
派遣奴隷の一時雇いのコーダーがそんな上流に関与するわけないだろ。 関与しないんじゃなくて、関与できない。無能のゴミクズだから。
お前も
>>374 で自己紹介してるじゃん
ブーメラン上手だね
句読点マンはただのなんちゃっての荒らしだろ 仕事したことないのに雑談スレでもいっつも知ったかぶりで頓珍漢なこといってるキチガイだから
句読点で個人を識別できる、特定の人物の異なるIDのコメントを特定できていると思うのは病気
>荒らしだろ >よぉキチガイ こういう発言は確実にコミュニティにとって害悪だから辞めて欲しい
androidでトランプのゲームを実装していて行き詰まりました イベントループがあってupdate(delta)とdraw(Canvas,delta)を各オブジェクトが呼ぶような実装です flashを参考にtweenerというクラスを作って オブジェクトをtweenerに渡すとアニメーションができるようにしました しかし、tweenerにもupdateとdrawを呼ばないといけないため 元のオブジェクトとtweenerと両方がupdateとdrawを呼ぶため オブジェクトが二重に表示されてしまうクソ設計でした 一般にアニメーションをクラス化するのにどういう方法がありますか 並行して処理したり逐次で処理したりが選べるといいのですが 自分の頭では限界です
>>386 AndroidはJavaのようでJavaじゃないので別のAndroidスレへ行きましょう
そしてデバッガーを使って処理を追いかけましょう
分からないから外に追いやる無能な俺たちを許してくれ ここは学生レベルか競プロ程度のことしか分からない人達の集まりなんだ
ええ、ご自身で原因と対処法を書かれていますのでこちらでそれ以上わかる事はございません
>>386 【原因】クソ設計でした
【対処法】
並行して処理したり逐次で処理したりが選べるといい
リモートデバッグの場合にはHot Code Replaceは使えないんですか?
>>393 VSCの事ならスレチ
だいたいリモートでデバッグってクライアントで起動してるのか
サーバーで起動してるのかでコンパイルしてるマシンが違うだろうに
Androidのことじゃないかな だから俺は無視してたんだけど
Android Studio だと Hot Code Swappingって言うんじゃ・・ replaceは置き換えでクライアントとサーバー間 Swapは交換でエディタとバーチャルデバイス間 どっちも似たようなもんだけど
VSC? Android? 何の話だ? リモートデバッグもホットコード置換もJVMの古典的な機能だろ リモートデバックでは置換はできないはず、大概別VMだしロードされた位置にあるclassやjar自身が変わらないし、置換できる方が不自然だと思う
>>394 Eclipseの話です
リモードなのでプログラムは別のマシンで起動してます
サーバーはGlassFish
>>396 すいませんJava経験浅いので色々種類があるのはシリませんでした
デバッグ中にブレークポイントで止めてメソッドの中身を修正するとすぐに反映される機能のことです
>>398 逆に言うとclassがどこに有るかわかればイケるということでしょうか?
例えば「ソース変更検知→build→rsyncでサーバーにclassを送信」する自作スクリプトとか
>>399 クライアントだけでなくサーバー側もEclipseコンパイラでビルドしておけば置換できるらしい
http://dplatz.de/blog/2018/java-hot-code-swapping.html ついでにここの筆者も同じことで驚いているけど、長年Javaで開発してるのにホットコード置換を知らない人は多いみたいだな
>>401 情報どうもです
gradle-eclipse-compiler-pluginとやらを試しましたがビルドエラー(´・ω・`)まだ先は長そうです
ちな
>>399 で思いついたsshでclassを送信するアイデアは効果なし
単純にclassを置き換えるだけでは意味がないみたいですね…
index.xhtmlとbeanを連携させてからもう一つ別のxhtmlファイル作って別のbeanクラスと連携させることってできないの?
Java EE 8 データソースを動的に決定したいんですけどなんかいい方法ないですかね? より具体的に言うとHost、Port、User、Passwordを環境変数で指定したいです @DataSourceDefinition ← ソースに定数ベタ書きは論外... web.xml ← ビルド時差し替えは出来るけど実行時に変更できないのでダメ...
spring bootを使うとデータソースの動的変更ができるみたい、知らんけど
bootなら設定不要で環境変数で設定できるね JavaEEでそういうことができないのだとすると辛いな
Eclipseはじめたばかりですが 背景色を黒系にしたいのだけど そのための設定はどこをいじればいいでしょうか?
>>412 Eclipse統合M36【Java/C++/Ruby/Python/Scala】 [無断転載禁止]©2ch.net
http://2chb.net/r/tech/1503723668 皆開発環境eclipseだけどatom使ってる人いないの?
いかなる点でatomよりVSCodeが優れていると聞いて もうじきatomは消滅すると聞いた。
M$がグループごと買収して作ったのがVSCodeじゃなかったっけ
WebカメラからH264のrtspを受信して、mp4ファイルに出力したいです。
>>417 途中で送信してしまったので続きです。
PureJavaならオープンソースのライブラリでも大丈夫です。
Robert Segewick and Kevin Wayne著『Algorithms 4th Edition』では、ジェネリクスを使って、スタックを実装しています。 文字列のスタックの配列を作る時には、以下のように書かなければならないと書いてあります。 Stack<String>[] a = (Stack<String>[]) new Stack[N]; 一方、Itemが型パラメータであるとき、Item型の配列を作るには、以下のように書かなければならないと書いてあります。 a = (Item[]) new Object[cap]; 自然に、なぜ以下のように書かないのかという疑問が思い浮かびます。 Stack<String>[] a = (Stack<String>[]) new Object[N]; こう書かない理由が以下のように書かれていますが、これが何を言っているのか分かりません。 You might have expected to use Object instead of Stack. When using generics, Java checks for type safety at compile time, but throws away that information at run time, so it is left with Stack<Object>[] or just Stack[], for short, which we must cast to Stack<String>[]. 何を言っているのでしょうか?
特に、 When using generics, Java checks for type safety at compile time,but throws away that information at run time, の意味が分かりません。
ちなみに、 type safetyとは何か知りませんし、 at compile timeとat run timeというタイミングの違いによってどういう影響があるのかも分かりません。
学術の巨大掲示板群 - アルファ・ラボ
http://x0000.net 数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
☆ VM + ASM を書いた (C#, DX) * x86 ではない!
http://up.x0000.net/files/TSimulang.zip ☆ malloc / free を実装してみた (C#)
http://up.x0000.net/files/TMallocTest.zip >>420 書籍が古いんでしょ
つ var a = new Stack<String>[N];
>>424 ジェネリクスの配列は作れないんよ
>>420 > 自然に、なぜ以下のように書かないのかという疑問が思い浮かびます。
> Stack<String>[] a = (Stack<String>[]) new Object[N];
実行できないからでしょ
Objectの配列をStackの配列にキャストできないから
実行時にObjectになるのはジェネリクスの型であってStackではないです
> When using generics, Java checks for type safety at compile time,but throws away that information at run time, ジェネリクスを使うとき Javaはコンパイル時に型の安全性をチェックします しかし、実行時にはその情報を破棄します と、いうことなので ジェネリクスの型が正しいかはコンパイル時にチェックされて 実行時にはジェネリクスの型の情報はありませんよという ジェネリクスの型のイレイジャを説明してるんだと思います
>>426 型の安全性とは、=の左右の型が一致しているということですか?
実行時には、型が安全であったかどうかという情報を破棄するというのは、どうしてそうするのですか?
なぜ、コンパイル時に行う処理と実行時に行う処理に分けるのですか?
>>428 > 型の安全性とは、=の左右の型が一致しているということですか?
左右の一致もそうだけどジェネリクスの型が関わるところはすべて
Javaは静的型付き言語なので型は実行前に決まるからコンパイルが通ったら
型の不整合は存在しないってこと
> 実行時には、型が安全であったかどうかという情報を破棄するというのは、どうしてそうするのですか?
イレイジャ方式を採用してるから、なぜイレイジャ方式なのかは過去のものとの互換性のためらしい
詳しくはこのあたりを参照いただければ
贖罪のイレイジャ - プログラマーの脳みそ
https://nagise.hatenablog.jp/entry/20160520/1463744926 > なぜ、コンパイル時に行う処理と実行時に行う処理に分けるのですか?
イレイジャ方式を採用してるから実行時にキャストが必要になる
((num%31536000)/8)/86400を実行すると213になってしまうんだけど原因わかりますか? 26になるはずなんですが
>>432 int num = 50000000
です
そもそも期待通りの値がnumにセットされてないと予想
>>431 解決したか?
javaの計算についてpublic class UnixTime { private int utime;pri... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13229755313 java の計算についてpublic class A { private int u; private static int... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11229753136 ジェネリクスの型引数はどうして一文字なんでしょうか? 省略せずにわかりやすく書くのが現代のプログラミングの基本だと思うのですが いつまでJavaはわかりにくい書き方に固執するのですか?
型引数はクラスと同格なので、名前が一文字のクラスがあったらぶちギレでしょう なぜ、型引数では一文字が常識とされているのかまったくわかりません
たとえばLinkedListクラスはこうなってます LinkedList<E> どう考えてもこうすべきでしょう LinkedList<Element> EだけだとErrorなのかEmptyなのがEggなのかわかりませんよね 僕はわかりましたけどみなさんはわかりませんよね
>>444 Javaにはパッケージという仕組みがあるわけですから
クラス名がかぶっても問題ないです
確かに一文字ってのは妙な文化だな 強いて理由を探すならこんなところ? ・ユーザー定義の型が入るワイルドカード感をどことなく醸し出したかった ・イレイジャーの存在感の希薄さをほんのり匂わせたかった
C#ではTElementだね 普通の型名ではない感を十分に醸し出しつつも説明性を犠牲にしない優れたアイデアだと思う
>>445 Elementは既にあるし
被らないならそれに越したことはないよ
順列組合せ関連の質問です。 例えば、{1, 2, 3, 4}の元の数が2の部分集合をすべてほしいとします。 Iteratorがループを回るたびに、そのような元の数が2の部分集合を返すようにしたいのですが、どのように実装すればいいか 分かりません。 単に元の数が2の部分集合をすべてプリントせよという問題ならばできます。
再帰が使えないようなのが難しい原因のように思います。
Ruby なら、この順番 a = [1, 2, 3] a.permutation(2).to_a #=> [ [1,2],[1,3],[2,1],[2,3],[3,1],[3,2] ]
stack だろ
>>453 では、
1 push
2 push 出力
2 pop
3 push 出力
3 pop
1 pop
2 push
1 push 出力
1 pop
3 push 出力
3 pop
2 pop
最も初歩的なインデックスを使ったイテレーションが素朴に2つのインデックスになるだけでいいのでは イテレーターに変数leftとrightを持たせて、初期値は1と2 rightだけインクリメントしていく rightが末端まで到達したら先頭に戻してleftをインクリメント rightとleftが同値ならとばす とてもシンプル
以下で "x" のところをA, B, C, Eのどれかにすると java.util.ConcurrentModificationException が発生するのに、Dにしたときだけ発生しないのはなぜですか? ¦ ArrayList<String> list = new ArrayList<>(); ¦ list.add("A"); ¦ list.add("B"); ¦ list.add("C"); ¦ list.add("D"); ¦ list.add("E"); ¦ for (String str : list) { ¦ ¦ if ("X".equals(str)) { ¦ ¦ ¦ list.remove(str); ¦ ¦ } ¦ }
C++じゃ良く聞く話だけれどもJavaでは上手い説明サイトが無い
>>457 コンパイルするとこうなるっしょ Iterator<String> it = list.iterator(); while (it.hasNext()) { String str = it.next(); if ("X".equals(str)) { list.remove(str); } } next()の処理で変更されたかがチェックされている hasNextはこうなっている public boolean hasNext() { return cursor != size; } "D"のときに値を1個削除するとcursor == sizeとなってnextが呼ばれずに処理が終了する なので、"C"のときには値を2個削除すればエラーにならないって感じ AとBがIterableインターフェイスを実装したクラスのインスタンスであり、 A = {1,2,3} B = {4,5,6} みたいになっているとします。 for (int i : A) { for (int j : B) { System.out.println(i + ", " + j); } } を実行すると、 1, 4 1, 5 1, 6 で終わってしまいます。 Bの先頭からまた繰り返したいのですが、どうすればいいでしょうか?
昨日質問した組合せのIteratorは解決しました。ありがとうございました。
あ、リセットするような機能をつければいいみたいですね。
>>460 ありがとうございます
すみません、理解できなかったです
ご提示いただいたように Iterator を使って以下のように書いてみたら
A〜Eどれも例外発生しなかったです
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
Iterator<String> ite = list.iterator();
while (ite.hasNext()) {
String str = ite.next();
if ("C".equals(str)) {
ite.remove();
}
}
すみません間違えてました
誤 ite.remove();
正 list.remove(str);
ですね
これだと事象再現できて、
>>460 さんの説明を理解できた気がします
質問 javaでプログラムを処理中にCtrl+Cでinterruptのシグナルを送って プログラムを強制終了するときにシグナルが送られたことをプログラム側で 検知して処理を分岐させる方法を教えて下さい
>>469 Javaでは出来ないからJNIかJNA使ってね
>>471 マジですか・・・シグナル送られると例外も投げられないし
finallyの処理も行われずにプログラムが終了するんですよね
Java難しいです
>>469 非標準でいいなら sun.misc.SignalHandler かな。最近のバージョンで使えるかどうかは知らん。
JNAググってみたんですけどこれ凄そうです、これでやってみます ありがとうございます!
シグナルの種類どうでも良いなら java.lang.Runtime#addShutdownHook(Thread) でいいんだけど
>>476 シンプルそうですね、ありがとうございます!
Ruby では、Signal.trap( :INT ) Java には、これぐらい無いのか?
このオワコンRuby啓蒙家は何なんだろうな おとなしく廃れてろアホ
だってほら、いきなり終わりになったらまずいプログラムもあるだろう。
未経験なら、Ruby 一択! 他の言語は、挫折確率が非常に高い。 だから、全ての学校は、Rubyばかり教える そして、ベンチャー企業は、Ruby on Rails ばかり採用する
>>485 自分も40過ぎです、いっしょにJavaやりませう
>>485 オレは30代のハゲです。いっしょにJavaやろうじゃないか。
>>490 お前新潟で降機させられて逮捕連行されてたんじゃないの?
数学の「型付きラムダ計算」とは? javaのラムダは型付き? v -> v.toString() こんな風に書いたとき、引数vもtoString()の返値も型を持ってるけど、 そのことなんだろうか?
JavaDoc に tl;dr 項目入れてくれ 正確で詳細な仕様が必要な場面より、 パット見で理解できる要約文や具体例が必要な場面のほうが多い
それはいいね 最近はIDEでJavadocポップアップするのが当たり前になってるから 要約ブロックがあればJavadocポップアップにも適していると思う
Reflection とか Annotation とか使いだして整理しようとすると、 Generics で型情報が消去されるのがほんとうんkですね… 将来的にどうにかできんのですかね… 互換性っていうけど、どの部分の互換性が崩れるんだろ List<String> list; みたいな宣言から、String は取り出せるんだけど List<T> みたいな宣言から、実行時にはじめて決定する型情報を引き出そうとすると無理になる 引数に Class<?> 渡せば良いんだけど、もにょる stream の toArray とかも、配列 new せんとあかんのかいってなるよね…
でも原理的に取り出すのが無理ってわけではないよね class ファイルにも型情報ないし、その総称型のコードの実行部分でも、そのオブジェクトの指すポインタからは(List の中身がつまってなければ)型はわからないけど コンストラクタなり、メソッドの呼び出し側は実際の型を知ってるよね多分 callGenericMethod(List<T> arg); ってメソッドがあったとして、呼び出し側クラスのフィールドに、 List<String> list って宣言があればスタックを戻っていけば型情報とれるけど、例えば、 void hoge() { callGenericMethod(new ArrayList<String>()); } みたいなメソッド内の呼び出しでも、Stack 探せば型情報ってあるよね Reflection でローカル変数の情報引き出せないとすると、デバッガ関連のAPI で、コード領域のメモリ検索してみたいなことしないといかんのか JVM 側にそういう機能があれば可能になるんじゃなかろうか デバッガ全部実装ってなると処理重いだろうけど、こういう局所的な機能だとどうなんだろ 無理なんかな
genericsがなかったとき、Listの要素はすべてObjectだった。その頃との互換性。 今でもListをコンパイルするとObjectのリストになる。 実行時の型情報はgetClassで取得できると思うけど
型消去の利点はコンパイル結果のclassファイルの互換性を保ち仕様変更を抑えられるところ Java5で書いたコードを1.4以前の環境でも動かせたりする classを相手にしないといけないツールやミドルウェアへのインパクトが小さい 型消去で妥協したからこそJava5でgenericsを導入できたしダメならJavaはより早く衰退していた可能性もある
それはよくある迷信というか当時のSunの詭弁 そもそもジェネリクスを使うにはJava1.5以降のランタイムが必要なんで、Javaを利用する立場ではバイトコードの互換性には実質的に何の意味もないのよ ジェネリクスが残念仕様になったのはひとえに当時のSunに金がくてJVMに手を出せなかったからで、事実Oracleになって金に余裕ができてからはJVMは拡張されまくってる
1.4以前のgenerics使ってない過去のコード資産を 1.5以降のgenerics環境でも使えるようにするのか、それとも綺麗サッパリ捨てるのかって話であって 1.4以前でもgenerics使ってるコードを動かせるようにするって話じゃないんよ……
そっちの互換性は.NETでは普通に実現できてたから、それが理由ならSunに技術力がないということになるよ
ドトネトは後発だからなーJavaよりも先に作られてて Generics導入前との互換性が完全に保証されてるなら MSはSunよりも技術力があると認めてやってもいいけどちがうじゃんか
ドトネトは互換性を切り捨てて言語の進化を優先した
言語が作られたばかりで利用者が少なく既存プログラムが少なかったからできたことだよ
.NET Framework 4.5と下位バージョンの互換性がカオス
https://freesoft.tvbok.com/tips/os/net_framework_45.html c#が登場したのは2000年。リリース時点でgenericsを考慮してなかったら、むしろmicrosoftの技術力を疑うわ。 実際、microsoftがgenericsの前身の研究を始めたのは1999年だし
そいやJVMの拡張って具体的には何の事言ってんの? バイトコードレベルっつーか命令セットレベルではinvokedynamicぐらいしか変更なかったと思うけど……
スーパー過疎スレだし、日記はブログに書けって言われるか、もしくは反応0かと思ったけど、 歴史的なうんぬんとかいろいろ書いてくれる人いてありがたい ちゃんとウォッチしてる人もいるんだねここ
型消去って、JVM や class ファイルの仕様だから、 Kotlin とか Groovy とかの後発JVM言語とかでも型消去はされるんよね? その辺のスクリプトってランタイムにいろいろいじくれる印象だけども 基本的にリフレクションのAPIをごちゃごちゃいじって出来ないことは、Kotlin Groovy でもできないってことなんかな
>514
kotlinやgroovyも実行時にgenericsの型消去されるのはその通り。
>>515 は嘘松
リフレクションで何をしようとしたの?
>>517 回答ありがとう
lombok の @Builder @Singular がカスタマイズ性低くて不満だったから、
Builder パターンのソースコードを自分で自動生成できないかなと思ったんだよね
ASD とか使ってやるのが正統派なんだろうけど、使い方覚えるのとか時間かかりそうだし、
そのままデフォで用意されてるリフレクション使ってパッと作れないかなと
とある対象クラスの1つがジェネリクス使ってて、困ったなどうしようかなって感じです
Producer extends Consumer super ってのは頭にあるけど、 これいつもこんがらがる
EnumSet の 3値版みたいなのってデフォでは用意されてないですよね?多分 true false ともう一個くらい欲しい あるインスタンスに関して、include するか exlude するか ignore するかみたいなフラグ そして、その3値のフラグがいっぱい欲しいとき EnumSet は、1bit で 1 flag だけど、2bit で 1flag みたいなの(これだと4値まで扱えるけど)
ありがとう たしかに、boolean の代わりにつかのならいいかもしれませんね OptionalBoolean だけど、bit flag 的な動作(=EnumSet のような仕様)のクラスは多分自作しないとない感じですよね
だってあなた true と false ともう1つって言ったじゃない
boolean の 3値版 は OptionalBoolean、3値以上ほしければ、enum だけど EnumSet の 3値版
boolean の 3値版 は OptionalBoolean、3値以上ほしければ、enum だけど EnumSet の 3値版
よくよく考えたら HashMap のラッパみたいなので事足りそうかも すまそ
でもよくよく考えたら、機能的にはそれでいいけど、内部的に bit flag 的な動作になってないから もともとの目的達成してないわ…すまそ
細かいけどOptionalBooleanというクラスはありそうで存在しない Optional<Boolean>になる Optionalをメンバとして使うのはSerializabeあたりの理由で微妙だしIGNOREという具体的な値をemptyで代用するのもまた宜しくない 素直にタイプセーフenumを使って恩恵を得るのが可読性と汎用性と、実用面で十分な効率を満足すると思う あとこの三値のお題でEnumSetに言及しているのは謎 Setではフラグをいっぱい持つことはできないぞ 高効率なListのような仕様を期待しているのだろうか
いやEnumSet的なもののインスタンスをたくさん持ちたいから高効率が希望ということか なら普通にEnumSetでいいと思う
ありがとう 一応、いまは2つ使ってやってます。 1つの EnumSet で 3値判定できれば楽かなって思ったんだけど、変なクラス作ってもわかりにくくなるし、これでいきます。 EnumSet<ItemType> excludes EnumSet<ItemType> includes
それ includes も excludes もそれぞれ A or B or C の何れかの状態しか取らないみたいなコード? もしそうなら君が欲しいのは EnumSet じゃなくてボツった Enhanced Enum 的なものかもよ?
そういうデータ構造だったのか 状態が排他的ならEnumMap<ItemType, X>でXを2値か3値のenumにするのもいいと思う
問題説明するときには、断片でもいいからコード提示しないとダメなんだなつくづく思った こっちは○○って言ってるのに、なんで見当違いな答えなの? とか思ってしまうけど、具体例出してないのが悪いんよな 数学物理でもこういう質問と答えの行き違いみたいなの結構ある
eclipse のゴミ箱ボタン(GCボタン)押して思ったんだけど、Java の GC でマウスカクつくのな 普通 UI スレッドで長時間タスクって、その アプリの UI が固まるだけだけど どういうスレッドの使い方したらこうなるんだろう もちろん、GC の設定や環境によるものはあると思うけど
ライブラリの著者が使ってほしくない機能をユーザーが使えないのってダメだよね リフレクションじゃなくても、ちょっと設定すれば普通に private メソッドもフィールドも使えるようにしてほしいわ 中身ちょっと直したい時に、全部 pull して修正するの面倒
痒いところに手が届かないならライブラリの熟成度が低いかライブラリの設計が悪い可能性はあると思う 仮に開発に参加している初心者が簡単にprivateのカプセル化のメリットを破壊して回れるような方式だとしたらOOP言語としての信頼自体を損ないかねない デメリットやリスクを理解した上で使う仕組みとしてリフレクション程度の面倒くささは悪くない采配だと思う
チームで作業してる時に、ポンコツが private メソッドいじっちゃうってなら、 ポンコツがいじれない箇所に設定を書けるようにすりゃいいだけだと思うけどな コンパイラフラグとかJVMフラグとか Groovy とかは、息をするように private メソッド呼ぶよね
うちの会社のハゲはポンコツで チームで作業してる時に、ハゲが private メソッドいじっちゃうってなら、 ハゲがいじれない箇所に設定を書けるようにすりゃいいだけだと思うけどな コンパイラフラグとかJVMフラグとか Groovy とかは、息をするように private メソッド呼ぶよね
うちの会社のハゲはチンポコで チームで作業してる時に、チンポコが private メソッドいじっちゃうってなら、 チンポコがいじれない箇所に設定を書けるようにすりゃいいだけだと思うけどな コンパイラフラグとかJVMフラグとか Groovy とかは、息をするように private メソッド呼ぶよね
>>537 privateの機能誤解してね?
privateってソースコードの編集を禁止する機能じゃないぞ。
中身を直すとか無関係な話。
カプセル化はわかってるけど、ライブラリ使い込んでいくにつれて、中身のそれいじらせろってなる事が多かったって話 ライブラリの設計が完璧なら必要ないのは分かるけど、そんなライブラリ現実にはほとんどない
privateにする理由 ・将来の互換性の維持(公開したメソッドは変更しずらくなる) ・privateのほうが実行速度はわずかに速い
最初はみんな private で、それを継承したクラスを作り始めると元のクラスの private がどんどん protected になる。
どんどんって言うほどだとクラスかパッケージの設計が不味いんじゃね
このスレにまともなJavaプログラマーいないのか... 誰かprivateの利用方法に突っ込めよ
やっぱりなんでもない。 もう人それぞれでいいや。 privateはクラスのメソッドや変数に対して外からアクセスしてほしくないことを明確化するくらいの認識があればそれでいいよ。
>>550 そうだよ
Javaのprivateはセキュリティではなく非公開の意思表示に過ぎない
だから開発者が公開したくないとしてもリフレクションで簡単に抜けられる
つまり開発者の使わせたくない意思よりも利用者の使いたい意思が最終的には優先されるの
それならリフレクション使わずともprivate呼べる手立てを用意しといてよというのが最初の主張なんじゃないかな?
少なくとも元発言者がJavaのprivateを理解してない初心者だとは思えない
簡単に抜けられるならそれでいいだろ ってのが答えだろうね
リフレクションで全部解決するならそれでいいんだけど、解決しないときもあるから 少なくとも性能面で格段に落ちる
javaとオブジェクト指向がごっちゃ? リフレクションを多用したプログラムは基本的にバグの追跡が困難になって システム全体の保守拡張性が失われていく そもそもそういう事態を避けるためのオブジェクト指向なんだけどな だからリフレクションを使う場面は 「公知され依存範囲も最小限の明示さえた範囲にとどまる場合」 に限るべきだと思う
いうて最近の言語はリフレクション相当のことが簡単にできるものばっかだし
オブジェクト指向で綺麗にシステム作っても システムを拡張する時に依存性を無視して 勝手にデータベースから別ルートでデータを扱ったり そんなことされたらもうおしまい
>>558 そういうことを防止するためにはそういうことができないような仕様の言語を新たに作るしかないでしょうな。
アプリケーションの番人としていつまでも居座る、という手もある ボランティアになるかもしれないけど
>>559 コンパイラオプションでできるできない設定できればいいだけだと思うけどな
それが不可能なレベルでの入り組んだ問題への対処なら、そもそも言語仕様としても成立しないと思う
junitの質問ってこちらで大丈夫でしょうか。 引数がinterfaceだったりabstractだったりするメソッドのテストってどうするんでしょう?
スタブとして自前で実装して引数に渡すか、Mockitoのようなライブラリを利用してモックテストする
>>563 やっぱ実装しないとダメなんですね…。ありがとうございました。
いやMockitoを使えば実装は要らない 知らないものを見ないふりしているといつまでも初心者のままだよ
でも図星でしょ? 質問の回答に知らない言葉が出てきたからその部分をググりもせずにスルーした そこが本当は必要としてた知識だったのに
信号を無視したら信号無視だよと言ってるようなもの チン次郎論法の亜種だな
そんなに説教がしたいか そんなに偉ぶりたいか そんなに自分の立ち位置を確認したいのか
読み直してみたけどMockito使うことを実装するって言ってるだけなんじゃない?
> 565 :デフォルトの名無しさん (ワッチョイ 8759-u7CM) [↓] :2020/12/09(水) 17:43:20.81 ID:4HmF+HCx0 [PC] > いやMockitoを使えば実装は要らない > 知らないものを見ないふりしているといつまでも初心者のままだよ 一生許さないから
PCをゲーム機のようにしか扱って来なかった人間ですが、3週間でサーティファイのJava能力2級を取得することは可能でしょうか? スレッド処理やら例外やらは大まかに分かりましたが、インターフェースがビックリするくらい理解できないです
インターフェース=共通規格の仕様 って考えるといいかもね あるインターフェースを実装しているクラスのインスタンスは共通規格に準拠しているから共通規格のメソッドを呼べる そのクラスのインスタンスをインターフェース型変数に代入することができる
ゲームで例えるとこうだ USBゲームパッド仕様=インターフェース PS4コントローラー=USBゲームパッド仕様を実装したクラス XBoxコントローラー=USBゲームパッド仕様を実装したクラス どちらのコントローラーも固有の機能を持っているがPCに繋げばUSBゲームパッドとして使える(振る舞える)
>>576 わざわざゲームで分かりやすく例えてくれてありがとうございます
ちげぇなぁ こういう奴の言ってることは大抵こう 「クラスはなんとかギリギリ理解した(ような気がするけど)、その後のインタフェイスになってもう完全に分からなくなった理解不可能助けて」
>>578 確かに理解出来てないものは多々ありますが、運や勘でもとにかく資格を取得するのが大事なので上のインターフェースについて概要を軽く説明して貰った方が飲み込みやすくて助かります
サーティファイのテキストの説明がよっぽどおかしいのか? どうなってんだ どういう駄文が書き連ねてあるんだ? そもそも何見て分からんと言ってるんだ?
eclipseとかでhashcode, equalsを自動作成できるけど 「未作成のクラスを検索する」とか 「自動生成と異なった実装になっているクラスを検索する」 みたいなことできないの? メンバー変数を書き換えた時に作り直し忘れるとバグになるし面倒だよね Lombokで自動生成するという手段があるらしいけどLombok使いたくないし
クラスの代わりにRecordを使えば解決 ただし正式に使えるのはJava16から
Intellijでクラスの中に書いたメソッドを実行するにはそのクラスの中にmain関数を作ってメソッド呼び出す処理を書いてrunする以外にありますか?色んなクラスにmainができてしまうので、普通はどうやるのか知りたいです。
>>584 ユニットテストを書け
指定したテストメソッドを単独で実行できる
最近勉強し始めたんですけど、インスタンスの部分で詰まってしまいました
画像の状態でシンボルが見つからないと表示されます。助けてください
>>586 import文がない
ふつうのIDEならSampleClass01のところでCtrl+Spaceで自動インポートされる
VSCodeに自動インポートがなかったら窓から投げ捨てろ
>>587 「import kihon.sample600.SampleClass01;」と書き足してもダメでした
同一パッケージはimportいらんくない? javac ./*でいけるんじゃね
>>590 ミスったjavac ./*.javaで
皮肉なものだなIDEならとイキったアホがimportの仕様をしらないとわw
myjavaフォルダで javac kihon/sample600/Sample601.java としてもコンパイルできるはず カレントフォルダはクラスパスに追加されて kihon/sample600内にclassファイルが存在するので
> 587+1 :デフォルトの名無しさん (ワッチョイ 5f9c-NUt6) [↓] :2021/01/08(金) 14:54:25.00 ID:GG1sOSQC0 [PC]
>
>>586 > import文がない
> ふつうのIDEならSampleClass01のところでCtrl+Spaceで自動インポートされる
> VSCodeに自動インポートがなかったら窓から投げ捨てろ
こいつwwww
eclipse collectionsのConcurrentHashMapと標準のはどっちが高性能なの? JMHと言うのやってみようと思ったけどエラー出て動かなかった JPMSのバグらしい
JavaAPIに修正というかアップデートして欲しいとき 日本語で質問や要望だせるコミュは有りますか? java MIDIのINでスレッド立ち上げるの辞めて欲しいのよね
ありがと。 日本語フォーラムに近いのは上かしら。 メンバーシップってほどなのかなーって気もしますけれど。 考えてみる。
>>599 正規ルートを知ったところで相手にされない
それよりもTwitterで日本人のJava権威者の目に止まったほうが可能性高い
色々やってみたら、MSOSのアクティブじゃないアプリの優先度の上限についてる問題だったわ
DBと連携する簡単なwebアプリを作っています。 eclipseでは一通り動作を確認しました。 それとは別のlinuxマシンがあり、その上でtomcatの所定の位置にwarファイル、 jdbcドライバを配置して、ブラウザからアクセスすると例外が出ます。 h2 dbを使っていますが組み込みモード、サーバーモードのどちらでも起こります。 ログを見る限り書き込み権限とかパーミッションの話のようですが、 具体的に何に誰の権限を与えるのかよくわかりません。 今のdbファイルの権限(とりあえずグループに書き込み権限を追加) -rw-rw-r-- 1 pi pi 32768 1月 17 23:04 mydb.mv.db -rw-rw-r-- 1 pi pi 2193 1月 16 14:34 mydb.trace.db その後wabアプリにアクセスした際のログ tomcat9/logs/catarina.out [2021-01-20 23:14:12] [info] org.h2.message.DbException: ログファイル エラー: "/mydb.trace.db" [2021-01-20 23:14:12] [info] Log file error: "/mydb.trace.db", cause: "java.io.FileNotFoundException: /mydb.trace.db (読み込み専用ファイルシ ステムです)" [90034-200] [2021-01-20 23:14:12] [info] org.h2.message.DbException: ログファイル エラー: "/mydb.trace.db" [2021-01-20 23:14:12] [info] Log file error: "/mydb.trace.db", cause: "java.io.FileNotFoundException: /mydb.trace.db (読み込み専用ファイルシ ステムです)" [90034-200] [2021-01-20 23:14:12] [info] #011at org.h2.message.DbException.get(DbE xception.java:194) [2021-01-20 23:14:12] [info] #011at org.h2.message.TraceSystem.logWrit ingError(TraceSystem.java:294) [2021-01-20 23:14:12] [info] #011at org.h2.message.TraceSystem.openWri ter(TraceSystem.java:315)
dbのパスがルートになってるけど、本当は/の前に何かあったんじゃないの?
>>606 ファイルシステムですか、思いもつきませんでした。
ラズパイのmicro sdなのであり得そうです。調べてみます。
>>607 javaの方では一応
jdbc:h2:tcp://localhost/~/mydb
と指定してますが、ログの方はルートディレクトリに書こうとしてるみたいなことを言ってるんでしょうか。
でもホームディレクトリにファイルが出来てるんですよね…
調べてみるとこちらの質問も同じようにログファイルエラーが出ていますが、
これはurl指定が間違っていたからのようです。
https://stackoverflow.com/questions/64756454/why-does-spring-boot-with-embedded-h2-throw-a-org-h2-message-dbexception-error 試しに一回絶対パスで指定してみようかと思います。
とりあえずotherにもw権限与えてみて様子を見てみるとか
>>605 ですが、h2のサーバーモードをターミナルから起動したところ接続できました。
ブラウザのコンソールで接続したら起動するものだと勝手に思っていました(今もよくわかっていませんが)。
h2の英語ドキュメントを頑張って読みます。
組み込みモードでは依然として繋がりませんが、これでひとまず例外は出なくなったのでよかったです。
色々と情報をありがとうございました
>>610 dbのファイルやホームディレクトリなども一通り777にして試しましたが、
それでも組み込みモードでは上手くいきませんでした。
とりあえずサーバーモードで使っていこうと思います。ありがとうございました。
今時はJava+springでバッチ作るとしたらどんなアーキテクチャが主流なんかね。
Collections.sort(numbers, (a, b) -> { return a - b; }); これが昇順にソートされるのは何でですか? sortの2つ目の引数にcompareを実装するラムダ式を入れて、aとbの比較をして、 結果の大小で戻り値が3種類に分かれるのはわかるんですが、その結果をどう使っているのかと、 numbersが1,2,3,4,5のときと、3,1,2,4,5のときでa,bに代入される順番やループ回数が違うのがわかりません。
Collections.sortの実装はマージソートなんだけどそれ自体は気にしなくてもいい 他のソートアルゴリズムだとしてもかまわない どのようなアルゴリズムであっても2つの要素の大小を比較しなければならない場面があるじゃない? そのときに第2引数で指定したラムダ式が呼ばれるんだ
>>613 aとbを比較して
aのほうがソート順で前になるべきなら負の整数
bのほうがソート順で前になるべきなら正の整数
同じ順序の場合は0を返す
というのが比較関数(Comparator)の定義
比較するのが数値の場合、a - bとすればaが数値として小さければ負の数となり
ソート順でもaのほうが前にあるべきという結果となるので昇順でソートされる
aとbがどういう順序で何回渡されるかや、それをどう使うかはsortの実装次第
そもそも中身がブラックボックスの方が余計なこと考えなくて済むから良いのに 理屈うんたら言うなら自分で調べろよと思う
ああ〜中でマージソートってのが行われてて、そこで使わせたい比較条件をラムダで渡してるだけで、何度渡されるか、どう使われるかはマージソートの実装次第なんですね。分かりました、ありがとうございます。
javadoc読みな。仕様上は安定ソートとしか決まってない。 あと、merge sortなんてとっくに使ってないから。
プリミティブ型でない場合は今でもマージソート(と挿入ソート)でしょ
マージソートが論点ではないことさえ理解できないアスペは放っておいたほうがいいよ
>>619-620 プリミティブかどうかで決まらないしマージソートと挿入ソートでもない。
だいたいこのスレワッチョイありだぞ。
>>621 Arrays.sortはプリミティブのときクイックソート
オブジェクトのときマージソートなんよ
Arrays.sortで使われてるTimsortも Arrays.parallelSortで使われてるCilksortもマージソートの亜種じゃん
なんで Java も JavaScript も String に UTF-16 使うん? UTF-8 がメジャーだけど、 やっぱりバイト長ころころ変わるのは使いにくいのかな String#length の現在の仕様でもサロゲートペアの扱いとか使い勝手悪いけど、 そのまま UTF-8 で実装したらさらにカオスか 文字数取得だけでも面倒なアルゴリズムになりそうね
質問書きつつ自分で答え書いちゃうって何? 個人的な感想をみんなに公開してみたかったということ?
単に歴史的経緯でしょ。 昔はunicodeといえばUTF-16しかなかった。
Unicode その設計にあたり世界中の名だたる企業から優秀な技術者が集まった 当時、彼らは16ビットで世界中のあらゆる文字が表せると信じていた 固定長、それがUTF-16の強みだった その頃生まれたプログラミング言語も皆そこに乗っかった だが、それは幻想だった 予想を遥かに上回る文字種がそこにはあった 設計チームは悩んだ サロゲートペア、それは苦肉の策だった UTF-16は優位性を失い、要らん子となった 時代は移ろい、今若者は訊ねた、なんでUTF-16使うん?と 歴史的経緯じゃね?俺もそう思った
>>626 かつてそれを本気でやろうとした言語があった。
そして結果は悲惨だった。
1988 Unicode の draft proposal 1989 HTML/HTTP の発明 1991 Unicode Standard (16bit でできまぁす!) この時代感
ISO2022JPって知ってる? 一時スタンダードだったんだよ
>>633 つRust
>>635 電子メール以外で広く使われていた記憶ないのだけど、どこでスタンダードだったの?
>>636 リトルエンディアン
ビッグエンディアン
unix jis
dos sjis
入り乱れていた時期があって
その頃の文章の企画のスタンダードって意味で
使われるスタンダードではないけどな
>>638 ユニコードコードポイントの数値そのままの符号化方式は UTF-32 やで
UTF-16 にはサロゲートペアがある
”ほぼ”って言ってるだろとか怒らんといてな
https://blog.tinect.jp/?p=68951 これ面白いね
「質問は、二台目の掃除機を買いにいくつもりでしろ」
この板でも1台目の掃除機として誰かに聞いてほしかったような恨みのこもった持論が出てきたり、変な人が宗教的な押し売りを始めることも多いね 大学教授は「動きません!助けてください!><」みたいな訴えにも毎年答えないといけないから大変だ
掃除機なら適当に1台買えば自然と不満点が出てくるから2台目でより良いものを買うための質問ができるというのは分かる でも学習はどうかなあ? 1台目を買う=自分自身がその分野の知識をある程度 身に付けている だから、そもそも初心者にはそれが難しいんだよ 2台目の掃除機を買うつもりで質問しろと言われても困る
そこは「つもり」なんだからええやん 100点満点は求められてない心掛けの話 よほどのアホでもない限り何かしらの試行錯誤や理想と現実とのズレを経てから人にヘルプを求めてる訳で、どう困ったかのギャップを具体的に表現しないと初歩的な質問すら伝わらない 字句通りに解釈して例示の意図を汲み取れず困惑するのはすまんが少々アスペっぽく感じる
そうかなあ? 質問は二台目の掃除機を買いに行くつもりでしろ=中級者くらいの質問をしろ だと感じるけどなあ これに納得や共感できるのは質問を受ける側であって本当の初心者には??だと思うよ
こういう比喩の認識が食い違ってるとき、 比喩の話のまま進めても本当に時間の無駄よ
いやいやリンク先の本文には比喩だけでなく具体的に掘り下げた説明的な二人の会話があるだろ 引用しようか? もう一度よく読んでも違和感が強く教授の言いたいことを汲み取れない、あるいは生徒側が誤った解釈をしているに違いないと思うならアスペ傾向あると思う
>>648 はリンク先をまともに読んでないので店員が売りたい掃除機が出てきちゃった例なんじゃない?
具体的に掘り下げた説明にはなってないと思うけどなあ 教授が言いたかったのは「何が分からないのかの言語化を試みて質問すること」でしょ それはいいんだよ なんでそれが「二台目の掃除機を買いに行くつもりで質問しろ」になるのか この先生、比喩とか要約とか下手過ぎるでしょ こんな意図を伝えることが下手くそな先生が質問の仕方をあーだこーだ言ってることへの違和感はんぱない
スクールと研究所・職場の違いもある。 スクールなら答えてやれよと思う。 職場とかの立場では、質問者もそれなりに配慮が必要
>>651 卑近な例で質問を受ける側の感覚を伝えたことで、現にこの学生には面白い話として伝わった上に強い印象を与えて習慣化できたわけだ
相手が融通の利かない子ならこの教授も比喩は使わず直接的な答えだけを言うかもしれないな
下手くそなどと言ってるけど、お前さんは恩師や先輩として誰かに尊敬されていたり、教え上手、喩え上手とされているの?
あなたが良き質問者となれば人からより上手に情報を引き出し学ぶようになれますよというチャンスの話 上から目線の義務や押し付けとして捉えてると損すると思う 親切なスクールもタダじゃないからね ゲームでいうなら良スキルの獲得イベント プライドが高すぎたりするとイベントに失敗する もちろん人に聞かず独学のみで達人になれるならそれはそれで良いスキル ただ偏屈属性は付きやすいと思う
そうだね 良い質問も大事、良いアドバイスも大事 二台目の掃除機はあまり良いアドバイスではなかったというだけの話
こういう質問FAQはとてもいいんだよ 雑魚先生が掃除機とか変なたとえをしちゃったのがすべての元凶
正規表現で一部一致の書き方を教えていただきたいです。 ここで言う一部一致の例を挙げます。 焼肉定食という文字列があったとして 三文字以上一致した場合マッチさせるという形を取りたいのです 焼鯖定食でも一致、焼魚定食でも一致、鯖定食でも一致という形を取りたいです。
そういう記法はないと思う ・Javaで普通にカウントするか ・肉定食|焼.定食|焼肉.食|焼肉定 みたいな正規表現パターンをJavaで生成するか ・(?:(焼)|.)(?:(肉)|.)(?:(定)|.)(?:(食)|.)で繰り返し検索して、グループが3件以上になる部分を探す 焼定食を許すのか、焼サバ定食を許すのかによってアレンジが要る あと鯖定食は三文字一致してないよな
>>661 正規表現の範囲ではあるパターンが「何個」とか数えられないので無理な気がします‥‥
>>663 焼肉定食から3文字の順列を作って|でつなげればいんじゃね
>>661 fuzzyマッチを実装してるライブラリなら簡単にできるよ
レーベンシュタイン距離で条件を指定できるようなやつ
agrepなら
$ agrep -1 焼肉定食 input.txt
昨日OGビーフを買ってきたので焼肉定食にした。うまかった
昔個人用で作ってた代物をリポジトリにあげたいんだけど、 lombok + Groovy + ( Maven もしくは Gradle ) この組み合わせのビルドが上手く行かない eclipse 上で maven かまさずにコンパイルされたものでは動いてたんだけど Groovy も lombok も precompile 処理入るからだろうけど いろいろ見てみてもあんまり
Mavenのプロジェクトに既存のソースをインポートした時に、ビルドできずに入力補完も働かないのですが、どうしたら良いでしょうか?
リングバッファについて、最後に入力されたN個を順に出力するいい方向はあるでしょうか?
https://pastebin.com/sy5W5wKV 例えば、上記の入力で、最後に入力された3個を順に出力する結果
6、7、8
を出したいのですが。
E[(tail + capacity) % capacity], E[(tail - 1 + capacity) % capacity], E[(tail - 2 + capacity) % capacity] をプリントすればできると思うけど、 headは何のためにあるの?length - 1とcapacityを比較する意味は?volatileの意図は?
674 確かに、headが全く機能していませんでした。 675 ありがとうございます。 var等まだ知らないことが多いですが、 勉強しながら書かれていることを理解してみようと思います。
あの、 Jqueryのinputmaskを使って桁数や数字限定等の入力制限を行ったんですが、 上司にそれだと登録時にサーバーに同様の入力チェックを設けないと入力制限を無効化して送れるからだめだと言われました 実際にどうやって無効化するのかものすごく興味がわいたので chromeでいろいろやってみたけど結局POST時にも入力制限かかっているっぽかったから問題ないように感じたのですが どうやれば無効化してサーバー側に送れるんでしょうか?
>>677 HTTPリクエストを改ざんするツールを使ってリクエストパラメータを直接書き換えるだけ
>>677 本当に上司はそう言ったの?
「サーバーでチェックしなきゃいけなくなるからダメ」じゃなくて
「サーバーでもチェックしなきゃダメだよ」って言ったんじゃない?
いくらクライアント側でチェックしてもサーバー側でのチェックが不要になることはないと思うけど
Webの画面を通さずHTTPリクエストを送ればいいだけ Chromeの開発ツールならネットワークタブでCopy as fetchしたのをコンソールで編集してから送信するか Copy as cURLしてコマンドラインからcURLで送信する Firefoxの開発ツールにはGUIでリクエストを編集して送信する機能が付いてる ブラウザ以外ならcURLやPostmanが定番
ドラクエでは、0.5% のデータがおかしいので、 ネットから来るデータを、絶対に信用してはならない! ネットの伝送エラー率が、0.5%で、それをエラーにしないルータがある。 チェックサムを再計算して、正しいデータとして、次へ送ってしまう そもそも、ルータの規格を決めていないから、どうしようもない だから、クライアント側で入力チェックして、 サーバー側でも、チェックするのが正しい!
WEB+DB PRESS Vol.90 に、 ドラゴンクエストX オンラインの特集が載ってた どうやって作っているか
ドラクエのRDBMSが高級商用製品なのも知られていない。
RDBMS は、よく覚えていないけど、こういうやつだったかな? Cassandraは、OSS の分散DB Kyoto Tycoon は、GPL V3 / LGPL。 Kyoto Cabinetは、GNU一般公衆利用許諾に基づいて利用許諾されたフリーソフトウェアです
サイトにある画像を自動で保存するクローラみたいなものを作ろうとしてるのですが、 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target のエラーが出ていて、調べたのですが何を最初に解決しなければいけないのか教えていただければと思います。
>>690 証明書の検証をしようとしたところ有効な証明書パスが見つかりませんでしたってことだから
証明書の検証をしないようにすればいんじゃないかな
>>692 ありがとうございます。
証明書の検証について調べてみます。
wget で、サイトのリソースも含めて、丸ごとダウンロードできるのでは? ひょっとしたら、curl でも出来るのかな? Ruby ではRails とか、Nokogiri, Selenium Webdriver などでスクレイピングして、 a タグを抜き出すとか
できるけど robot.txt の存在には気を付けてね 一歩間違えれば攻撃になっていまうから
怪しい事やってんだろ、自覚があるかどうかは知らんが
別スレでdata-*属性に書かれている画像がwgetでダウンロードできなくて困ってる人いたな HTML5ではありふれた状況だしwgetで正規表現による属性追加くらい標準機能で受け入れてくれてもいいのにと思ったわ
data-* 属性の使い方は、各ユーザーが決めるものだから、使い方を予測できない 例えば、5ch では各投稿に、投稿番号・ID などの、3つのdata-* 属性を使っている <div class="post" id="692" data-date="NG" data-userid="ID:5su42aEd0" data-id="692">
予測できない多目的属性だからこそ、用途を知っている可能性があるコマンド利用者が指定できればいいのにという話なんだが… いつものRubyおじさんかな
>>698 あれは画像はダウンロードできてるけどdata属性に書かれてる絶対パスを相対パスに変換してくれないから
JSで処理してるリンクをクリックしてもオフラインだと動かないという話だったかと
正規表現使った簡単な置換コマンド1つで処理できる内容なのでwgetで指定できる必要性はないと思う
仮にdata属性に指定された画像がダウンロードできてないという話だったとしても
grepしてwgetするコマンド1つ書けばいいだけなのでは?
>>701 別スレの話でモメてもしょうがないので回答だけ
ダウンロードできてるというのは全部回答者の憶測だったよ
wgetしてgrepしてwgetシーンが時々あるならツール自身がやってくれた方がいいと思ったんだよね
別にそのオプションがないから糞だとか言うつもりはない
>>702 誤字
wgetしてgrepしてwgetする、だった
あとwgetの仕様を見たら既知の属性しか処理対象じゃなかったんだよね
んでオレオレ属性に対応するパッチを書いてる人もいたので、今やdata-*も広く使われてるんだし公式でとっとと取り込めばいいのにと思ったわけよ
初見 大量のPDFを一括処理しようと思ってる。 やりたいことは、PDFをAcrobatで開いた時の「文書のプロパティ」の「レイアウトと倍率」の各項目を所望の状態にしたい。それを一括大量に。 Javaのライブラリでそんな事ができるのってある?
>>232 あ、これコンパイルでもなく、ランタイムでもない変なエラーね。対応してませんみたいなやつ。
eclipseのバージョン2019年頃のなら普通に Swingできました。
どうしてもあかんときは、コマンドラインで javac, javaして動かしたら行けるはずです。
javaに参照渡しはないと思ってたのですが以下のコードをみるとfは参照渡しに見えます コンパイラの最適化とかでインライン展開でもされるのでしょうか class T{ public int a; public T(int v){ a=v; } } public class HelloWorld { public static T f(T a){ a.a = 7; return a; } public static void main(String[] args) throws Exception { // Your code here! T a = new T(10); T b = new T(10); T c = f(a); T d = a; System.out.println(a.a); System.out.println(b.a); System.out.println(c.a); System.out.println(d.a); System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); } }
上のコードの実行結果 7 10 7 7 T@6d06d69c T@7852e922 T@6d06d69c T@6d06d69c cは参照アドレスが異なる者と思っていました fの引数の箇所とreturn aの箇所でそれぞれ参照の値渡し用のコピーが作られると思っていたのですが 違うのでしょうか
どこでそんな知識を… むしろ、プリミティブ型以外は全て参照渡しだよ
参照渡しと言い切ると齟齬がある fの中でaに再代入した場合呼び元のオブジェクトには波及しないから
>>708 wikipediaの「引数」の項目みれば? たぶん「参照渡し」を勘違いしてるだけかと。
ときどき出てくる参照渡しを勘違いしている人ってなんなんだろ? C言語しか知らないのかな? C言語のポインタ引数のことを参照渡しだと思ってそう C言語のポインタ引数は値渡しだよ ていうかC言語とJavaは値渡ししかない C++かC#をやると参照渡しがなんなのか分かるよ C言語とJavaをやってるだけでは参照渡しは理解できない(だって参照渡し出てこないもん)
いったいどこで「参照渡し」なんて言葉覚えてくるんだろ Javaにはそんな言語機能ないのにさ
C では変数は、値を入れる箱だけど、 他の言語では、変数は名付け・ラベル 箱に入れるようなイメージをしてると、参照のコピーで苦しむ。 immutable・変更不能なのは、Primitive 型だけ それ以外は、deep copy していく際、 再帰的に、Primitiveに突き当たるまで、実体がコピーできないので、 参照のリンクを断つのに苦労する
C言語とJavaは同じだと思うけどなー C言語のポインタ変数=Javaのオブジェクト変数(参照型)だよ
このソースの結果がなんでこうなるのかわかりません。 言語仕様を理解していれば説明できるといわれました。 なんでこうなるのでしょうか? public class Main { public static void main(String[] args) throws Exception { Integer int050a = 050; Integer int050b = 050; Integer int100a = 100; Integer int100b = 100; Integer int150a = 150; Integer int150b = 150; Class<?> clazz = Integer.class; Field field = clazz.getDeclaredField("value"); field.setAccessible(true); field.setInt(int050a, 050 + 1); field.setInt(int100a, 100 + 1); field.setInt(int150a, 150 + 1); System.out.printf("int050=%d,%d(%b)\n", int050a, int050b, int050a==int050b); System.out.printf("int100=%d,%d(%b)\n", int100a, int100b, int100a==int100b); System.out.printf("int150=%d,%d(%b)\n", int150a, int150b, int150a==int150b); } } 結果 int050=41,41(true) int100=101,101(true) int150=151,150(false)
Javaの配列やオブジェクト引数の渡し方は値渡しと参照渡しの中間みたいな感じ この中間的なものに名前がついていないことが学習しにくさを招いてるような気もする
>>717 050はoctet
にしても一瞬にして見る気を奪う変数名
Ruby では、すべてがオブジェクトだから、数値型.メソッド、と書ける Primitive 型がある言語では、Primitive型.メソッド、とは書けない。 Primitiveには、メソッドが無いから メソッドを呼びたい際、Box・オブジェクト化する。 オブジェクトで包む そうすると、オブジェクト.メソッド、と書ける。 Box/Unbox 化
>>717 これかな
5.1.7. Boxing Conversion
https://docs.oracle.com/javase/specs/jls/se16/html/jls-5.html#jls-5.1.7 If the value p being boxed is the result of evaluating a constant
expression (§15.29) of type boolean, byte, char, short, int, or long, and
the result is true, false, a character in the range '\u0000' to '\u007f'
inclusive, or an integer in the range -128 to 127 inclusive, then let a and
b be the results of any two boxing conversions of p. It is always the case
that a == b.
ハイパー超訳だけど
ボックス化された値が-128〜127の場合は同じオブジェクトになります、ってことのよう
ラッパークラスもコンスタントプールに格納されるんかね、これは知らなかった
>>713 >C++かC#をやると参照渡しがなんなのか分かるよ
偉大なるpascal様を忘れ給うな
>>708 えっと、参照渡しの定義は
仮引数への代入によって実引数が変わることなんよ
a.a = 7;
これは仮引数への代入ではないよ
.(ドット)演算子があるのでオブジェクトの状態を変えてるだけ
変数への代入とオブジェクトの状態を変える操作は異なるもの、という認識が必要
a = new T(7);
としても実引数は変わらないっしょ、だからJavaは値渡しなんよ
まず、等価・等値の区別を学ぶべき。 Primitive型とオブジェクトの等価・等値とは、何を比べる事なのか? 内包する値が等しいのか、 オブジェクトIDが等しいのか?
GoogleがJava SE APIをコピーしたことは、プログラマーが自分の才能を生かして新しいプログラムを開発するために必要なコードのみを含んでおり、法律上、その素材におけるフェアユースにあたる。
今日、12年に渡るGoogleとOracleの裁判に判決が出たんだよ! GoogleのAndroidでのJava使用はフェアユースだからOracleの権利を侵害していないと認められた これはJavaコミュニティにとっても喜ばしいニュースだね 権利侵害が認められるようならGoogleはJavaを捨てるなんて話も出ていたから、そうならなくて本当によかった!
java勝ったからもうお前に用はない ○ ←google く|)へ 〉 ヾ○シ ←Kotlin  ̄ ̄7 ヘ/ / ノ | / `| /
Oracle は、Java を独占して、大儲けしようと思っていたけど、大失敗
これで、java のクラスライブラリを C# や C++ に移植できる‥‥
共有渡しなどでググってみましたがまだ理解できません 比較のためC++の例を。こっちが頭にあるから混乱してたのかもしれない #include <stdio.h> struct T{ int a; T(int i){a=i;}}; T f(T a){ return a;} int main(){ T a(10); T b=f(a); //javaと違ってbのアドレスは変わる。ここの挙動がjavaの疑問点 T c = a; //これもjavaと違って新しいコピーが作られる。コピコン T* d = &a; //ポインタ。同じアドレスをさす T& e = a; //参照。同じアドレスをさす printf("%d\n%d\n%d\n%d\n%d\n",&a,&b,&c,d,&e); return 0; } 実行結果 286472060 286472064 286472068 286472060 286472060
追記。javaと比較しやすいように参照渡しの関数を追加しました #include <stdio.h> struct T{ int a; T(int i){a=i;} }; T f(T a){ return a; } T& g(T& a){return a;} //前のコードに追加したコード int main(){ T a(10); T b=f(a); T c = a; T* d = &a; T& e = a; T& f = g(a); //参照渡し。同じアドレスをさす。前のコードとの違いはここ printf("%d\n%d\n%d\n%d\n%d\n%d\n",&a,&b,&c,d,&e,&f); return 0; } 実行結果 1519342484 1519342488 1519342492 1519342484 1519342484 1519342484
c++風な理解ですがjavaの共有渡しは 実引数a 値アドレス10 アドレス100 仮引数a 値アドレス10 アドレス101 と言う風に準備されて 仮引数に代入してもアドレス101に代入されるので実引数のアドレス100には影響が無い 値アドレスは一緒なのでa.a=7などと代入すると実引数の値も変化する こういう理解だったのですがjava的には違うのでしょうか 最初のコードでT c=f(a)としたときにcとaのアドレスが変わらないということは C++版での参照渡しのコード(関数g)に対応すると考えました
Javaは参照の値渡し T& h(T& a){ a = T(100); return a; } と public static T h(T a){ a = new T(100); return a; } を比べるといいと思う
https://ideone.com/RVYDij 構造体のポインタ(≒Javaの参照型)でなくて
構造体そのもの(≒Javaには存在しない値型)使ってるから混乱するんじゃね?
JavaのコードはC言語だとこうだよ #include <stdio.h> #include <stdlib.h> struct T { int a; }; struct T* f(struct T* a) { a->a = 7; return a; } int main(){ struct T* a = malloc(sizeof(struct T)); a->a = 10; struct T* b = f(a); printf("%d, %d, %p, %p\n", a->a, b->a, a, b); return 0; }
>>740 > 最初のコードでT c=f(a)としたときにcとaのアドレスが変わらないということは
> C++版での参照渡しのコード(関数g)に対応すると考えました
Javaでは変数のアドレスは見れないよ
cとaで参照してるオブジェクトのハッシュ値が出力されてるだけ
cとaの参照先が同じオブジェクトってこと
参照渡しは変数を参照するって意味で
共有渡しは変数の参照先を共有するってこと
Java の参照はポインタだと思えば理解は楽だな。C言語だと x->x のように書くが Java だと x.x と書くことになっているだけ。 null だと指す先がないので NullPointerException になる。
Java には、構造体そのものが無いのか。 構造体は、内包物がすべてコピーされるだろ つまり、異なるオブジェクトがnew されてから、すべての内包物がコピーされる。 つまり、2つのオブジェクトが存在する 一方、構造体のポインタは、内包物がコピーされないし、 コピー用のオブジェクトも、newされないから、 オブジェクトは最初の1つだけしか存在しない 単なる名付け・ラベル。 1つのオブジェクトに、別の名前を付けただけ 幾つのオブジェクトが作られたか、newの回数を数えればよい
変数を、値を入れる箱みたいに思うのは、ダメ。 箱に入れるイメージは、C/C++ だけ 他言語では、変数は名付け・ラベル 新たなインスタンスを作って、コピーしていない。 単に、既存のインスタンスに、別名を付けているだけ だから代入の前後で、インスタンスは1つしか存在しないし、 new も、されていない つまり、newの回数と、存在するインスタンスの個数を調べるのが重要 ただし、Primitive はオブジェクトと異なるので、これには当てはまらない
JUnitでテストクラス作って実行すると、ClassNotFoundが出る時はどうしたらいいですか? Eclipseのプロジェクトをすべて消してイチから作り直したけど、原因が分からないから再発しそうで怖い
>>754 ありがとうごさいます
参考になりました!
JavaからAccessデータベース起動したいのだが Runtime execだと起動ぐらいしか出来ない データベース操作するにはCOMブリッジ使えば良いのかUcanAccess使う方が良いのかよく分からない Apache PoiではAccess操作出来ないよね?
mdbを操作したいのではなくてAccessを動かしたいってこと?
>>761 両方
mdbにJavaからテーブルへ数値書き込みしてから起動
Accessは起動時の設定でクエリー動くマクロやVBAを動かしてデータを整えてレポートを出力させる
やっぱりJavaからAccess帳票出力するって特殊なのかな ほとんど事例無いからググっても出て来ない
自分ならUcanAccessでDBを読み書きして JavaからVBScriptのプロセスを起動して VBScriptでAccessを操作する MS OfficeのAPIはCOMでCOMのGCは参照カウントでJavaや.NETのGCは世代別GC オブジェクトのライフサイクルが違うので動作が不安定になる PowerShellでOutlookを操作してみてそう思った
>>764 RuntimeでVBScript起動してVBScriptからmdb操作するって方法か、、
テーブル書き込みはUcanAccessか
なるほどね
それぐらいしか簡単な方法無いね
ああAccess起動だけならRuntimeから直接Access起動は出来るね 操作までやるのはVBScriptとか利用せにゃならんけど
>>767 PoiでAccess扱えるclassが用意されていない
>>767 よってExcelとかはPoiで操作出来るのが一般的
Apache Poi使うな、と言われたらRuntimeでゴリゴリコード書く事になるけど
ODBCブリッジはJava8で消されたから小細工しないと無理
今はJava8のLTSで運用してる所多いからAccessはUcanAccess使うぐらいしか方法無いと思うけどな
>>771 小細工ってどんな方法?
>>771 調べました、確かにそうですね
しかし、ODBC-JDBC ブリッジ(TypeI) を削除してしまうなんて私には悪手(の典型)に見えるのですがどうしてそんなことをしたのでしょうか?
主要なRDBMSはJDBC Type4ドライバーあるからね もはやODBC-JDBCの役目は終わったってことでしょう ODBC-JDBCで助かるのはほぼWindowsだけだし(わずかだけどLinuxにもODBCある) マルチプラットフォーム目指すJavaにとってはODBCは邪魔になったってことよ
>>775 でも、腫瘍じゃない RDBMS とかが新たに出現したとか、マイナーなものがまだまだあるとか、今回のように access に access したいとか、そういうレガシーのために残して置いて「あげよう」とかいうのをバッサリ切るのは、さてどうなんでしょうか?
java は文法は OO としてはかなり保守的なのに、そういうところは荒っぽいのはチグハグな印象を持ちました
とにかくUcanAccessが有って良かった これでmdb横から更新して後は起動すれば起動時の設定でクエリー動かしてレポートまで出力出来る JDBC-ODBCブリッジは有った方が良いとは思うけどね
マイクロソフトだってmdb捨てたいんだよ 10年以上前からAccessの内部データベースはSQL Serverになっただろ mdbじゃなければJDBCで読み書きできる
>>778 >>マイクロソフトだってmdb捨てたいんだよ
それは理解出来るが帳票ツールとして捨てられないのよ
accessの帳票機能だけ取り出せんもんかと 昔思っとったね。
>>778 >>10 年以上前からAccessの内部データベースはSQL Serverになっただろ
詳しく!
JavaならJasperReportsで良いじゃん
>>782 GPLライセンスで常にフリーで使えるなら良いけどね
難しいでしょ
>>784 Jackcessは制限有るからダメだよ
ジェネリクスのワイルドカードについての解説を見ても、どういうことができるのかは分かるんですが、どんなときに使うのかイメージできません。 追加か取り出しのどちらかしかできなかったりするのもそうです。 参考例など教えてもらえませんか?
>>786 ? extends X はメソッドの引数に使う
? super X はメソッドの戻り値に使う
それだけのこと
C#だとそのままズバリinとoutと書くので圧倒的に分かりやすいんだけどね
引数戻り値というより、メソッドの中でどういう使い方するか、ってこと。 List<? extends X> list であれば、このlistから取り出して何かする。 for(X x: list) { x.x_method();} List<? super X> list であれば、このlistに突っ込む処理をする。 list.append(x) // xはXかその派生クラスでなければならない。
こういうスレって>787みたいな知ったかの阿呆が回答側にいるからダメなんだよな
> List<? super X> list
これ、メソッドの中だとList<Object>と実質変わらんわけで、何の意味もないんだよ
他の総称型を使ったクラスやメソッドに渡るときに初めて意味があって、それは
>>787 の通り
「実質」ってなんだ? 少なくともコンパイルの時点では違うだろ。 バイトコードの話なら、そもそもワイルドカード以前の問題だし。
OSはLINUXの64ビットで、JAVAプログラムを32ビットで作成する場合、 JDK、JREは32ビットを使わないとだめ?
Javaプログラム(jar)には32ビット/64ビットという違いはないよ
>>793 jarファイルについては
>>794 の通りだけど、
JRE・JDKについては、32ビットはメモリの制限がきついから
64ビットを使った方がいいよ
>>793 Javaのプログラムを32bitで作成するという意味がよくわからない。
32bitのOSが動いている別のマシンで開発して64bitのLinux側で動かすという意味?
>>796 いまでも32ビットのコンピュータやOSはたくさんあるだろうが。
32ビット環境で動かすつもりなのに64ビット環境で作っているのはミスを誘引する。
>>798 なるほど
どういう流れで誘発されるミスなのだろうか
CだとBSD系・Windows系のLLP64かSystem V系統のLP64か、とかある気がするが
細かい点としてlong/doubleの上下位ビットのスレッド分離問題はでてくるかもしれない。 もっとも、32bit版JVMでも分離するような実装が存在するかどうか知らんが、仕様上は何も規定されてなかったはずなので。
>>799 緩い型を使っていたり、メモリのアドレスに依存しているものを使っていた場合、32ビット環境で動かすとやはり想定外のことが起きる。JavaのVM仕様の解釈によっても異なる。
緩い型ってなに? JNIならともかくJavaは型のサイズ明確に決まってるよ intは32ビット、longは64ビットといった具合にね 型サイズまで処理系依存のC/C++とは違うのだよ
>>801 なるほど
「緩い型」とか「メモリのアドレスに依存」というと、それはつまり何なのでしょう
JNIでCプログラムを呼び出す場合、の話なのでしょうかね
あとVM仕様の解釈の違いの差異というと、何があるのでしょう
JavaはJNIを必ず経由するわけではありません。
JavaGoldって紫本を読んで黒本を解いていく地道な勉強ルートしかないですか? なかなかモチベがあがらないし過去問の正解率も思うように上がらないので もっと手軽な動画講座とかないかなと思ってるんだけども 勉強のためなのでお金はある程度出せます
>>806 黒本解いて、間違えた問題の解説に書いてある理屈を、自分の言葉で別にまとめる。
再度、問題を解くときは、問題を忘れる程度に間隔を開ける。
連続で間違える問題は理解ができていないか、間違って理解している。
正解と不正解が混じる問題は、理解が不完全。
連続で正解する問題は、理解できている。
正解不正解にかかわらず、解説を読んで仕様の理解が重要。
あと再受験無料キャンペーンを利用して、初回を緊張せずに受ける。
落ちても、追加費用が掛からないのは、精神的にかなり楽。
試験に合格するだけならSilver取れてれば、追加の学習時間は100時間未満でも十分可能だと思う。
モチベーションの維持は個人で異なるので、試験を申し込んで締め切りを設定して、自分を追い込む。
自分はSE8Goldは上記のように学習して合格した。
動画で見てインプットだけしても、記憶に定着しづらい。
動画見る時間でアウトプットしたほうが、トータルの学習時間は短く済むと思う。
>>808 やっぱり、コツコツと過去問説かなきゃ駄目ね
学問に王道なし
ノートを取ることにするわ…
サンクス
IntelliJ と Eclipse はどちらがおすすめですか?
有料版を買うまたはWeb開発しないならIntelliJ IDEA 無料でWeb開発したいならEclipseで我慢
>>810 ラムダ式とかStreamとか書きまくるならIntelliJがおすすめ
Eclipseは補完ができないことがたびたびある
自分は使い慣れてるからEclipse使ってるけど
>>811-813 ありがとうございました。
IntelliJを使おうと思います。
Sedgewick & Wayne『Algorithms 4th Edition』の公式ページではIntelliJが推薦されていて、
今まで使ったことがあるのは、Eclipseだったので迷いました。
https://algs4.cs.princeton.edu/code/edu/princeton/cs/algs4/Graph.java.html 「public Graph(In in)」というコンストラクターの中に以下の例外処理のコードがあります。
catch (NoSuchElementException e) {
throw new IllegalArgumentException("invalid input format in Graph constructor", e);
}
「NoSuchElementException」という例外をキャッチしていますが、この例外はどこで投げられるのでしょうか?
>>815 In.readIntのソース見ればわかるよね、ここで聞かなくても
え? IntelliJ? Kotlin もよろしく。
質問させていただきます。 「A=1を何倍ずつしていくと5回目に10000を超えるか」 という問いに対するプログラムを作りたいのですが、以下の様に書いたら「5」と表示されてしまい、上手く行きませんでした。 まず考え方としては、nの5乗が10000を超える時のnの値を出力する為に、for分の方ではiが1〜5までnのべき乗を繰り返すプログラムを作成し、それにwhile文で「Aが10000以下の条件」をつけ、nの値を+1ずつ増やして判定し続け、最終的にAが10000を超えた時点でのnを出力するプログラム書いたつもりです。 どこが間違っていて何を訂正すれば良いのかヒントやアドバイスなどをご教授いただければ幸いです。 お願いいたします。 public static void main(String[] args) { int n=1 ; int A=1; while(A<=10000) { for(int i=1;i<=5; i++) { A=A*n; } n++; } System.out.println(n); }}
2箇所間違ってる デバッガの使い方がわからないならprintlnをたくさん挿入してnやAがどう変遷しているか画面に表示してみればいい
Java勉強しようと思うんだけど、とりあえずSilverやGoldの勉強したほうがいいですかね(実際に受けるかはともかく) 何か作るというのも考えたのですが、体系的な知識を積むのには向いてないかな、と思ったり。 言語はC#やPHP、VB.netなら業務で使ったことがあります。
SilverやGoldは 当たり前だけどJavaの試験なので 実際には使わない機能や書き方も試験に出てくる つまり実務とはちょっと方向性が違う 「体系的」というのが何を意味するのかに寄るけど 比較的新しいバージョンの機能の問題もでない
OracleのJava資格の勉強は、我流で趣味プログラムを書いたり 仕事で誰かのコードを加工させられているだけでは身につかないような Javaの細かい仕様や機能を浅く広く知識として身につくって感じだな Java8以降に登場した新しい書き方、ラムダ式や関数型インターフェースなんて 下手にレガシーな現場に放り込まれるよりは Goldの自習でもしてた方が手っ取り早く身につくんじゃないかという気はするし
資格はあくまで言語仕様と標準ライブラリの知識にとどまるから どんなフレームワークが栄えているのぞやとか Javaでよく使われるデザインパターンだとか おすすめのIDEやウェブコンテナはなんぞやとか lombokとかjunitみたいな便利ツールとか Javaで必要ないろんな周辺知識が抜け落ちるみたいなところはある
ClassCastExceptionについて教えてください。 AのサブクラスBが定義されていて、 AインスタンスをBにキャストすると、実行時にこの例外が発生すると思うのですが、どういった仕組みなのでしょうか。 B b = (B) new A(); b.method(); 一行目で、bに代入されるアドレス先のインスタンスの型をなぜみにいってるんでしょうか?多相性を考えたときに二行目ではなく一行目で例外が発生することに違和感を覚えます!
多態性の向きを勘違いしてるんじゃない? 子Bは親Aとして振る舞えるけど、親Aは子Bとして振る舞えないよ
>>827 よく考えたら、二行目の間違いが発生してから例外処理しようとしたらぶっ壊れますね。
解決しました。
>>828 それは理解してます。
変数bからしたら実体が何かというのはBという型情報だけ知ってればよくて、メッセージ送信先で問題があれば例外が発生すればいいのにと思いました。
すみません、ダウンキャストって多相性とはちょっと違いますね。
メソッド呼び出しとかするたびに毎回型チェック発生って効率悪いでしょ、動的型言語なら仕方ないけど。
>>830 早め早めにエラーが出ることの有用性を全く理解できないなら、Java使うのやめた方がいいよ。
ダックタイピングに慣れてる人なんだね Javaのような強い静的型付け言語では早期に型を確定させる これはミスの早期発見が主目的だと思う
代入時にエラーになるとしても実行しないと型の違いによるエラーがわからないのがつらいよね ダウンキャストは禁止するべきだと思う、Javaはもっとハードボイルドになって欲しい
>>832 そもそも多相性の話とは違うという誤りがあったけど、この質問自体に有用性が理解できないって話はしてないだろ、文盲バカか?
もとになっているオブジェクト指向のモデルと、それを実現する言語設計の関係の話で、何を考えそのようにしているのか、どうバランスをとってるのかって話だろ。
みんなは有用性からそうしてるって教えてくれているけど、お前のは質が違うぞ。
日本語読めない人はプログラミングやめたほうがいいよ。
>>830 いや理解してないでしょ
親Aは子Bとして振る舞えないんだから B にキャストしないでよ
実行時クラスまでしかダウンキャストできないです
>>836 振る舞えないのでキャストできないということは、承知の上で、例外が発生する時機の疑問でした。
でも、例外はメッセージを受ける側で発生するので、無理なキャスト命令がきたら例外を発生するのは当たり前でした。
自分のアホな質問でした!という結論です。ごめんなさい。
>>837 すみません、結論が違ってました!
振る舞えないのにメッセージを送ったら壊れるので、送られる前のキャスト時に例外が発生するのは当たり前って話でした!
とにかくアホな質問をしました。ごめんなさい。
すみません、先に例外を出さないといけないことはわかったのですが、 参照型のキャストは実際にはなにが行われているのか仕組みを誰か教えていただけないでしょうか。
>>839 参照先のオブジェクトのヘッダを見て型をチェックし、キャスト先の型と互換性がなければ例外をスローする
実質的には何もしていない
>>840 やっぱり何もしてないんですね!ありがとうございます!
すっきりしました!
struts2.3からstruts2.5にバージョンアップ(jar交換)したところ、Tomcat起動時に以下のエラーが発生しました。 何のエラーなんでしょうか? org.apache.catalina.core.StandardContext filterStart 重大:フィルタ�[struts2]�フ起動中の例外です java.lang.RuntimeException: Unable to load bean org.apache.struts2.views.velocity.VelocityManager(org.apache.struts2.osgi.VelocityBundleResourceLoader) - [unknown location] - Class: com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector File:ContainerImpl.java Method: inject
>>843 レスありがとうございます。
パッケージ名も変更しましたし、springのバージョンもアップデートしました。
velocitymanagerは移動してないですよね。
エラー内容はVelocityManagerが場所がわからず、ロードできないという事でしょうか? org.apache.catalina.core.StandardContext filterStart 重大:フィルタ[struts2]�フ起動中の例外です java.lang.RuntimeException: Unable to load bean org.apache.struts2.views.velocity.VelocityManager(org.apache.struts2.osgi.VelocityBundleResourceLoader) - [unknown location] - Class: com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector File:ContainerImpl.java Method: inject
それっぽいけど何が原因かわからない スタックトレース出てない?
>>846 文字制限で一部ですが。
14:54:13.365 [localhost-startStop-1] ERROR org.apache.struts2.dispatcher.Dispatcher - Dispatcher initialization failed
java.lang.RuntimeException:java.lang.RuntimeException: Unable to load bean org.apache.struts2.views.velocity.VelocityManager (org.apache.struts2.osgi.VelocityBundleResourceLoader) - [unknown location]
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:286) ~[struts2-core-2.5.26.jar:2.5.26]
:
at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73) [struts2-core-2.5.26.jar:2.5.26]
at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61) [struts2-core-2.5.26.jar:2.5.26]
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285) [catalina.jar:8.5.28]
�F
at�java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_161]
at�java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
省略されたところに原因があると思うんだよねー
jarが足りないとかDTDが違うとか
こことかにスタックトレース全部貼って欲しい
https://friendpaste.com/ RuntimeExceptionは本当の原因をCaused byでラッピングしてて 真相はCaused byを見ないとわからないことが多々あるんです
なんで世のリファクタツールは returnを複数持つ関数をインライン展開できませんか ラベルつきブレークにしてください
スレッドセーフでない…別のスレッドで…仮に…同じクラスを…読み書きした場合… どうなるの?…プリミティブのint、long、doubleは…以前の値、新しい値、混ざった値… になるのは解ってるけど…クラスだったらどうなる?
クラスポインタをすげ変えてる間にスレッドが衝突したりはするまい
ふつうはクラスをアンロードしたりはしない クラスをアンロードしないなら複数スレッドから触っても問題ない クラスではなくインスタンスの参照を保持するオブジェクト変数のことであれば、volatile 付けるか synchronize 等で同時実行制御すれば安全になる
オブジェクト変数という言い方はおかしいか オブジェクト型フィールドかな
>>856 intと参照への代入は古い値か新しい値のどちらかになる
つまりアトミックではある
longとdoubleなら混ざった値になることもある
ただ、同じクラスを書き換えるって言い方が怪しいな
クラスやインスタンスのメンバの値を書き換える場合の振る舞いはそのメンバの型に依存する
volatileはその名が示す通り、排他制御のためのものではない。
? volatileが排他制御のためのものである、なんて言ってる人いないよね
>>862 Java 5からvolatileの仕様が変更されたんだよ
64ビット値の書き込み・読み取りがアトミックになることも保証されるようになってる
volatile の仕様変更について詳しく知りたかったら JSR-133 で検索してね
Javaのオブジェクト参照って64bit環境だと64bitなんだっけ ↓こういうの書くときはvolatile付けたほうがいいのかな? if (sobj == null) sobj = new Obj(); return sobj;
C#だと参照型、bool、byte、、、intはアトミックって仕様として決まってるけどJavaはどうなのかな
>>863 volatileの仕様がどうであれ排他制御目的ならsynchronize使っとけってことだろたぶん
>クラスではなくインスタンスの参照を保持するオブジェクト変数のことであれば、volatile 付けるか synchronize 等で同時実行制御すれば安全になる この書き方がいろいろ微妙だからでしょ 変数への読み書きがatomicかどうかで言えば 参照はvolatileつけなくても常にatomic primitiveはlong, doubleを除いてatomic long, doubleはvolatileをつければatomic
>>866 シングルトンにしたいならvolatileにしてもダメ
AtomicReferenceがいい
厳密さにこだわらないならvolatileなしもアリ
>>869 微妙?
この文のvolatileは安全であるに掛かってて、その理由は可視性の問題
排他制御に掛かってると読むのは誤読だし、ID:nwZ7YrBt0のほうが全然理解が深いでしょ
>>872 何をもってスレッドセーフと言うかという前提の違いなのかな
volatile付ければ安全って書いてるから
ほぼ同時にスレッド1でwriteしてスレッド2でreadした時に
実際に実行された順序通りの結果が保証されてなければ
writeやreadはスレッドセーフじゃないって考え方でしょ?
オレは順序の保証がなくてもアトミックならreadやwrite自身はスレッドセーフって考え方
順序が問題になるような使い方してるならvolatile付けるだけじゃ駄目だしね
>>873 「volatileが排他制御のためのものである、なんて言ってる人いないよね」ってのが俺の発言だよ
反論するなら暗に名に「言ってる人がいるかどうか」がポイントであって、各人が安全をどう捉えるかの違いなんてどうでもええがな
反論ではなく皆さん気を付けましょうねという話ならわかる
>>873 そもそもID:nwZ7YrBt0の発言は明らかに参照の更新がatmicであることを理解した上での一歩進んだ可視性の話を付け加えて安全と言及してるんだから何れにしても釈迦に説法
「volatileを付けると安全になる」 これが微妙なんよ volatileをスレッドセーフティを提供する手段として考えてるのが超微妙 排他制御云々書いた人の考えはわからないけど volatile付ければ安全て言われるとそりゃないわってなる
>>876 C/C++ では volatile なんて全く当てにぜずに、例えば posix-thread を使う(し C++11 lator では p-thread が取り込まれてしまった)のですが、Java ではまだ volatile を当てにするコードが生き残っているのですか?
volatile付けるだけで安全なんて発言ないよ その解釈には無理がある 文脈を理解できない人にまでいちいち配慮してらんないよ スレ民の個々のスキルなんてマチマチなんだからvolatileをうまく使えるかどうかは本人次第 スレッドセーフティを語る上で可視性を軽視している方が微妙だと思う
プリミティブの振舞いは知ってるんだけど…Stringを同時に…読み書きすると…どうなりますか? 結局…スレッドセーフにするんだけど…今まで…なんで動いてたのかって…事で…
全ての参照割り当ては…アトミックと…言っているが…本当なんでしょうか?
https://stackoverflow.com/questions/7421558/is-string-s-foobar-atomic Stringなので…クラスポインタ…書き換える所で…でっていう事で…
クラッシュしなかったら…間違っててもいいんだよ
とりあえず…運が良かっただけだろうね…直しとくわ…
>>876 排他制御をコードブロック(複数ステートメント)にのみ使うものだと思ってるのかな?そこが認識が一致しない原因かもしれない
複数ステートメントだったらsynchronized等を使って排他制御する
これはあなたの言う通り、間違ってないです
でも単一ステートメントでフィールドの読み取り・書き込みをする場合は?
これもlongやdoubleの場合は排他制御が必要になる
もちろん複数ステートメントの場合と同じくsynchronized使ってもいいんだけど、この場合はvolatileでも代用できる
上位32ビットの書き込みと下位32ビットの書き込みの間に他スレッドからの読み取りがおこなわれないことが保証されるのだからこれも立派な排他制御ですよ
volatile を付けて、仮想アセンブラを見てみれば? どういう仮想命令に変換されているか
結局…動いてたのは…アトミックだったからだろう…直すか直さないか…しとくわ… ありがとう…
Java Silverって黒問さえ出来れば同じような問題が出るのでしょうか 受験者の方のご意見いただけたらと思います。
>>882 JVMの中間コードは元よりも少しだけ機械が処理しやすい形に変換されたソースコードに過ぎず、実際のマシンの動作と対応するものではない
そんなものを見たところで何の証拠にもならん
お前の好きなルビ糞のVMだって一緒だ
巣に帰れ
>>885 ほとんど同じだった、ブロンズ、シルバー、ゴールドとったけど
ブロンズが一番難しかった、オブジェクト指向の概念とかよくわからん
Javaの勉強始めたところですが、メソッドのソースって何処を見れば掲載されていますか? equalsメソッドをAPIドキュメントで見ても、 サマリーやパラメーターや条件は記載さているのですが、 以下のソースはどこ見ればわかるのでしょうか? public boolean equals(Object obj) { return (this == obj); }
現時点では必要はないかと思いますが ご参考に、どのようなところを調べれば分かるのでしょうか? ご教示いただけたら幸いです。
https://github.com/openjdk/jdk oracle jdkとは差分があるかもしれんけどここ見れば
いまのJDK配布物にはsrc.zip同梱されてないんだっけ? IDEにもよるけどsrc.zipアタッチしておけばメソッド名クリックで中身を潜っていけるのでおすすめ
Angularが良くわかないんだけど、例えばmd-toobarとmat-toolbarはなにが違うの? いま触っているのが全部md-xxxだけど、ググるとmat-xxxばかり package.jsonも、angularーmaterialになっているけど、ググって出てくるのは@angular/materialで、違いが分からない
マルチです。すみません どうか教えてください 以下のようにarrayList要素を2つ含んだarrayListがあります。 alist = [["a","b","c"],["d","e","f"]] ["a","b","c"]を取得したい場合は以下です。 alist.get(0); ではarrayList["d","e","f"]の"d"を取得したい場合はどのように書けばいいのでしょうか? alist.get(0).get(0)とは書けませんでした。
ジェネリクスList<List<T>>を使ってないんじゃないの? getしたのがObject型だとgetメソッドがないことになる ジェネリクスかキャストしてみて
>>901 ああ確かに宣言時に指定してなかったかもしれません
助かりました。ありがとうございます
>>900 alist.get(1).get(0)
これできない?
できないとすると本当に2重の ArrayList になっているのかだな。
もし一番内側のリストが ArrayList ではなく実は配列というのであれば alist.get(1)[0] になる。
むう。
>>902 と
>>903 の時間が逆転している・・・
ありがとうございます。無事躓いた箇所をパスできました。
結論から言ってジェネリクスのしていがされておりませんでした。
ただ字分が不勉強なこともあり、get(0)で取り出したものをnew listに入れてそこからgetすることとしました。
喫緊の課題だったとはいえ、マルチに関わらず回答寄せて下さりありがとうございます。
今後はマルチにならぬよう気をつけます。
>>903 回答下さりありがとうございます。また申し訳ないです。
初歩的な質問ですみません。 ある文字列を半角の?マークで分割したいのですが、 splitメソッドに?を渡そうとするとエラーが出ます。 バックスラッシュでエスケープを試みても同じです。 半角の?を文字列として、メソッドに渡す方法はありませんでしょうか?
ありがとうございますm(__)m バックスラッシュ2つでいけました!
Javaでオンラインゲーム作りたいんですが できますか?
世界で最も売れたマインクラフトも作れるよ! やったね!
>>910 大槻 有一郎
「15歳からはじめるJavaオンラインゲームプログラミング教室」
ISBN-10 4899772319
ISBN-13 978-4899772316
ぽくの構想のオンラインゲームは 0.1秒おきに通信が成功しないとならぬのです でもそんな無料高速サーバーどこにあるのか全然わかりません ググっても見つかりませんでした だれか教えてください
>>916 localhostっていうサーバーが超高速らしいです
1ms未満で応答返ってきます!
127.0.0.1 というサイトもものすごく応答が早いよ!
127.0.0.1 は私が予約しているから勝手に使わないで!
15歳以下だったらニオイなんて気にして無かったかも
ビーンズの香ばしいニオイはジャコウネコのトムのもの
BufferedImage[] imgs ImageIO.write(imgs[i], "jpeg", new File(i+".jpg"));にファイルを書き出したところ、プロジェクトファイルの直下にファイルが書き出されます。 ファイルの書き出し先は指定できるのでしょうか?
new Fileにファイル名だけじゃなくて出力したいパスも指定すれば指定したとこに出力できる
Javaから始める人は プログラマに向いてないって本当ですか?
世の中にはVBプログラマもいるが、例えばホリエモン
なぜ int a[]=new int[10]; だといけないのでしょうか? int[] a=new int[10]; にしろと命令されます
上はint型のa[]って名前の変数にint型配列を代入しようとしてるからだめ 下はint型配列のaって名前の変数にint型配列を代入してるから正しい さすがに変数宣言の書き方はググってたどり着けるようにしないとこの先厳しいと思うよ
int a[]=new int[10]; これは古い書き方 C言語から移行しやすいようにしたんだろうね int[] a=new int[10]; これで統一したほうがわかりやすいからだと思う
>>935 どっちも通るのな...知ったかしちゃって恥ずいわー
Cの名残だったりするんかね
「型の情報 変数名」という語順の原則を破る例外的な文法規則だからね C言語をデザインした人が当時はどっちの書き方もアリだろと感じたけど、やっぱ新規のソースではイレギュラーは少ないほうがいいよ
ポインタのある言語の頃は変数の前や後ろに&だの*だのがべたべたくっついてたから int a[] みたいな宣言も今ほどキモくなかったんだと思う
知ったかする奴ほど光の速さでレスつけるのはやっぱり 無知無能な奴ほど周りから認められようと必死で自己顕示欲が強いからなんだろうね
人格攻撃するだけの卑屈な振る舞いが善意の回答より勝ることがあるとは思えん 鶏口となるも牛後となるなかれと思うよ
Spring Boot, h2, @Entityでテーブルを自動生成しようとしているのですが 失敗します。このバージョンの組み合わせでは動かないという情報は どこかないでしょうか?
久し振りに趣味プログラミング再開してみたら何だこれ。えらいこと面倒くさい手順が必要なのな。
GUIをやめてスクリプトで動かすようにすれば 面倒くさい手順が簡単になるよ
androidアプリを作れるようになりたいのですが 習得するのならjavaよりkotlinのほうがいいでしょうか?
その選択にはあまり意味はない KotlinはJavaのスーパーセットなので、Kotlinを習得するためには実質的にはJavaを習得しなければならない モノが作れるようになるまでの時間をなるべく短縮したいならJavaから入ったほうがよい その上でKotlinに進んでも学んだことは一切無駄にならない
サブセット?? 間違って覚えてるのか、何かの皮肉?
アドバイスありがとうございました それにしてもjavaのスレってこんな感じなんですね(涙
精神の壊れた多重下請奴隷ばかりだからね こうなりたくなければJavaなんかに手を出さないことだ
予定では9月21日にCorretto 17 LTSが一般公開されるみたいだね Correttoサポ−ト終了日 8 LTS 2026年6月 11 LTS 2027年9月 15 FR 2021年4月20日 16 FR 2021年10月19日
9月21日? 遅いなあ Oracle Open JDK は9月14日じゃなかったか
オラクル、Oracle JDKを再び無料提供へ、本番環境でも利用可。昨日リリースのJava 17から − Publickey
https://www.publickey1.jp/blog/21/oracle_jdkjava_17.html >>968 迷走してますね‥例の訴訟はどうなったのでしょうか?API にも著作権があるのでしょうか?
どうせなら特許侵害とかで尼などの野良JDKを潰しにかかればよかったのにな APIの著作権を主張するよりは勝ち目はあると思うが
今日のJavaがあるのはOracleに買収される前にJavaをオープンソースとして公開したSunの功績よな
>>968 わろた。
ライセンス違反に神経使って来たこの3年間はなんだった!?
>>968 LTSのアップデート一年付きということはupstream(openjdk)の
非LTS2つ分のバグ・セキュリティフィックスpickするつもりかな。
Oracle DBのお布施が値上がりして信者が離れたからjavaの新ライセンスで
ボろうと思ったら競合が独自ビルド乱発してoracle jdkが選ばれる可能性が低く
なったから方針転換ってところか。googleへのトロールも失敗したからまあ、仕方ないね。
失ったのJWSくらいだし完全に裏目に出たね。java MEオワッタけど。
オラクソってホント害悪だな 技術力についていけなくなった糞企業の典型なんだよな
Javaを開発してるのはOracleですけど OracleになってからJavaの開発進み出しましたけど Sunのときは新規開発は塩漬けになって死に行く運命でしたけど
OracleほどJavaに金注ぎ込んでる会社はないよ
技術についていけないんじゃなくて手間のかからない金のなる木がほしいんだろ。
>>976 open jdkに熱心に関わってて金持ってる大企業がoracleとredhatしか居ないじゃん。
open jdk以降アホほど増えたバグ潰しまくってたのsunだし、
7の仕様策定遅れたけど途中から買収の話も同時進行させてたし、
そもそもoracleは7をリリースさせたことをアピールして8もうまく言ってるって
ホラ吹いてたけど、7,8,9でスケジュール切り直して、8,9,10でまた切り直して順調じゃなかったし。
oracleはtop contributorの一つでしかない。
open governanceの実質トップはIBMが距離置いた今redhat。
oracleがjavaの権利持ってることがコミュニティの懸念材料だよ。
open jdkの利益になる提案は受け入れられるけどそれ以外はjavaコミュニティ全体から警戒されてる。
8で馬鹿なバグ大量に出すし鯖以外のエンジニア大量にクビにするしjava magazineで宣伝始めるし、
javafxやるやる詐欺だったし、JEP作ったくらいの功績しかない。
11の仕切り直し以降うまくいってるからとりあえず問題ないけどoracleだけの成果じゃない。
>>979 OracleがSunを買収してからラムダ式やモジュールなど
新しい機能がリリースされたのは事実だよ
Sunはまったくやろうとしなかった
SunはJavaをオープンソースにして捨てたも同然の状態だったよ
IBMとRedHatはつい最近CentOSを乗っ取って有名無実化したばかりだし
一番信用できない会社
JavaのアーキテクトはBrian GoetzでBrian Goetzを雇ってるのはOracle
Javaを進化させてるのは間違いなくOracle
>>980 OracleがDBで悪辣なことやってるのは知ってるけど
OracleがJavaに投資してるのも事実だし
JavaにとってはOracleがSunを買収したのは良いことだった
Oracleを信奉することがバイアスであるように
Oracleだからダメだというのもただのバイアスでしかないと思うよ
>>982 OracleはEJBの仕様書が欲しかったそうだよw
今さらOracleJDKが無料になっても 逃げた魚は戻って来ない
昔はプログラミングするときは10万円のソフト買わないといけなかったので断念してた でもそんなときJavaという無料の言語に出会ってプログラミングの楽しさを味わえたんだ ありがとうそしてさようなら
>>989 学生なら割引で万札一桁で買えたけど
そうじゃないならものすごく高額だったと思う。
Java出た当時はえらいトピックだったのは確か(2000年近辺) 今やCOBOLと変わらん位置付け
Javaが出た当時はC++一色だったような気がする いろんな言語が提案されてJavaが生き残ったイメージ
今、プログラミング言語を勉強するなら何を勉強すればいいのでしょうか? Sedgewick & Wayneの『Algorithms 4th Edition』ではJavaが使われているので、Javaでいいのかと思っていました。
Pythonなどの本格的でない?言語ではなく伝統的な本格的な言語の中でどれがいいかという話です。
Javaなんか習得したらメンテ案件にすぐ放り込まれるぞ
Javaは一世を風靡したから開発者人口が多いんだよね コミュニティが活発というメリットもあるけど 日本の業務システム開発現場では供給過多で買い叩かれることが多い印象、、
>>993 Java で書いてある本が手元にあるのなら Java でいいかと
ただし様々なデータ構造を詳細に把握したいのなら、やはり C/C++ になるかと思います、セジウィックがどうやってC/C++の二重ポインタと、それにまつわる複雑なデータ構造(赤黒木とか)を解説しているのか興味がありますね
>>996 Java の文法は(かつては)保守的だから‥‥
Javaでプログラミングの基礎を学んで開発戦士のアビリティーをゲット 熟練度がそこそこ上がったら上位職にあたるKotlin使いにクラスチェンジしてアンドロイド世界にフルダイブ
-curl lud20250106013621ncaこのスレへの固定リンク: http://5chb.net/r/tech/1588770728/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「★★Java質問・相談スレッド183★★ YouTube動画>9本 ->画像>3枚 」 を見た人も見ています:・埋め立てスクリプトってRubyで作れますか? ・C++/WinRT cppwinrt::part1 ・java初めて少し経ちましたが ・includeと継承の違いが解らない… ・Java有償化まとめ ・スレ立てるまでもない質問はここで 156匹目 ・Pythonのお勉強 Part53 ・p2p技術総合スレ ・環境構築ツール統合スレ Ansible、Chef、Vagrant等 ・Flutterやろうよ!!! 2 ・Pythonのお勉強 Part60 ・Robocodeなるものを大学でやってるんだが ・リンク先を読めるように出来る人いませんか? ・GUIプログラミング総合 ・ますたーのお勉強中の独り言スレ ・プログラム系を覚えたいんだが何を覚ええたらいい? ・助けてください ・【急募】毎日のCPU時間を17年間節約する技術 ・JS初心者の集まるスレ ・VRプログラム雑談【Unity/UnrealEngine】【HTC Vive/Oculus Rift/その他VR】 ・Excel VBA 質問スレ Part51 ・プログラミングのお題スレ Part20 ・どのレベルならプログラミング出来ると言っていい? ・Win32API質問箱 Build23 ・オブジェクト指向ってクソじゃね? ・応用情報って取る価値ある? ・【入門】Common Lisp その11【質問よろず】 ・Pythonのお勉強 Part55 ・Excel VBA 質問スレ Part77 ・Rust part6 ・最近の奴は0.001秒で何命令実行できるかも知らない ・Excel VBA 質問スレ Part75 ・ オブジェクト指向を今すぐやってください ・オブジェクト指向を教えてくれ!★2 ・【ER図】なんでもリレーション貼るの害悪じゃないかな? ・AIは自動化と組み合わせることで人間の仕事を奪う ・.NET CORE No.2 ・【おめでとう】4月1日はHSPの日【ようこそ】 ・大学生になったらIT企業でバイトしたいんだけど ・Amebaブログみたいなブログサイトが作りたい ・回復能力と記憶消す能力あれば同じ女を何回も殺せる ・人工知能ディープラーニング機械学習の数学 ★2 ・Python の宿題ここで答えます Part 2 ・スレ立てるまでもない質問はここで 154匹目 ・AtCoderとかしてる奴は自分で問題を作れない未熟者 ・Go language part 5 ・工業高校での研究について ・Monacaでアプリ開発してるんだけどsqliteが使えない ・スレ立てるまでもない質問はここで 158匹目 ・Pythonのお勉強 Part5 ・pythonista総合スレ【IOSで勉強できる】 ・実データでプログラミングすれば単体テストは不要! ・【hoge】メタ構文変数【foo】 ・Java入門・初心者質問スレ Part.7 ・Rubyに'end'って要らないよな ・くだすれPython(超初心者用) その42【Ruby禁止】 ・Pythonは同じ事するのにforと内包表記の2つの方法が ・帰ってきた動的言語 VS 静的言語(代表Swift) ・Visual Studio Code / VSCode Part12 ・【.cmd】 バッチファイルスクリプト %15 【.bat】 ・話題が長引いても安心な匿名掲示板「Anontown」 ・C++諦めたから他のオススメの言語教えて! ・C++相談室 part143 ・Java入門・初心者質問スレ Part.11 ・静的型付け言語の潜在開発生産性は今の100倍 ×5
11:36:21 up 24 days, 22:00, 0 users, load average: 9.63, 9.01, 8.83
in 2.5598459243774 sec
@0.048828125@0b7 on 010601