タグ付けされた質問 「java」

Javaは、元はSun Microsystemsによって開発された、プラットフォームに依存しない高レベルのオブジェクト指向プログラミング言語です。Javaは現在、2010年にSunを購入したOracleが所有しています。

6
代わりにdoubleが主に推奨されるのに、なぜfloatがJava言語の一部であるのはなぜですか?
私が見たすべての場所で、それはほぼすべての点doubleで優れていると言いfloatます。Javaでfloat廃止さdoubleれたのに、なぜまだ使用されているのですか? 私はLibgdxで多くのプログラムを作成しており、それらを使用することを強制していますfloat(deltaTimeなど)が、doubleストレージとメモリの点で作業する方が簡単だと思われます。 私はまた、いつfloatを使用し、doubleを使用するのかを読んでいますが、float本当に小数点以下の桁数が多い数値にのみ適している場合、なぜ多くのバリエーションの1つを使用できないのdoubleですか? もはや利点がなくなっても、人々がフロートを使用することを主張する理由はありますか?すべてを変更するのは大変な作業ですか?

11
Javaの開発者は意識的にRAIIを放棄しましたか?
長年のC#プログラマーとして、最近、Resource Acquisition Is Initialization(RAII)の利点について詳しく知るようになりました。特に、C#のイディオムは次のとおりです。 using (var dbConn = new DbConnection(connStr)) { // do stuff with dbConn } C ++に相当するものがあります。 { DbConnection dbConn(connStr); // do stuff with dbConn } つまりDbConnection、usingブロックのようにリソースの使用を囲むことを覚えておくことは、C ++では不要です。これは、C ++の大きな利点のようです。あなたはタイプのインスタンスメンバを持つクラスを考えるとき、これは、より説得力があるDbConnectionたとえば、 class Foo { DbConnection dbConn; // ... } C#では、Foo IDisposableを次のように実装する必要があります。 class Foo : IDisposable { DbConnection dbConn; public void …
82 java  c#  c++  language-design 

6
TRACEレベルが存在する理由と、DEBUGではなくいつ使用する必要があるのですか?
Log4J、Slf4J、およびその他のJavaのロギングフレームワークには、ロギング用に2つの「開発者」レベルがあります。 デバッグ トレース 説明が明確であるため、DEBUGの機能を理解しています。 DEBUGレベルは、アプリケーションのデバッグに最も役立つ詳細な情報イベントを指定します。 しかし、TRACEレベルは、そのユースケースについてあまり明確ではありません。 TRACEレベルは、DEBUGよりもきめ細かい情報イベントを指定します (ソース:log4J JavaDoc) これは、TRACEの使用方法や使用時期を教えてくれません。興味深いことに、これはsyslog標準で定義されている重大度レベルではありません。TRACEとDEBUGの違いをグーグルで検索すると、「DEBUGを使用してください。TRACEもあります」と返されるようです。TRACEレベルの特定のユースケースが見つかりませんでした。私が見つけた最高のものは、レベルの存在のメリットについて議論しているこの古いwikiページでした。 これは、建築家として、私の頭の中にたくさんの旗や質問を投げかけます。若い開発者が私のアーキテクチャにTRACEを追加するように頼んだら、私は彼に質問を投げかけました: DEBUGではなくTRACEで記録する必要がある情報の例は何ですか? その情報を記録することで、どのような特定の問題を解決できますか? これらの例では、DEBUGレベルではなくTRACEレベルでログを明確に区別するログ情報のプロパティは何ですか? その情報がログインフラストラクチャを通過する必要があるのはなぜですか? 単に使用するのではなく、ログジャーナルにその情報を保持することの利点は何System.out.printlnですか? デバッガーよりもログを使用する方が良いのはなぜですか? TRACEレベルでのロギングの標準的な例は何でしょうか? 例のDEBUGではなく、TRACEレベルでログを記録することで得られた具体的な利点は何ですか? なぜこれらのゲインが重要なのですか? 逆に:DEBUGではなくTRACEでログを記録することで回避した問題は何ですか? これらの問題を他にどのように解決できますか?TRACEレベルでのロギングが他のソリューションよりも優れているのはなぜですか? TRACEレベルのログステートメントを製品コードに残すべきですか?どうして? しかし、ほとんどの主要なフレームワークに存在することを考えると、何かに役立つと思いますか?それで... TRACEは何のためにあり、DEBUGと何が違うのですか?
82 java  logging 

3
引数を取らず、何も返さない関数の名前は何ですか?[閉まっている]
Java 8のjava.util.functionパッケージには、次のものがあります。 機能:1つの引数を取り、1つの結果を生成します。 消費者:1つの引数を取り、何も生成しません。 サプライヤ:引数をとらず、1つの結果を生成します。 ...:プリミティブ、2つの引数などを処理する他のケース... しかし、「引数を取らず、何も生成しない」場合を処理する必要があります。 これには何もありませんjava.util.functionnal。 したがって、質問は次のとおりです。 「引数を取らず、何も返さない関数」の名前は何ですか? Java 8では、その定義は次のようになります。 @FunctionalInterface public interface InsertANameHere { void execute(); } エグゼキューターは既に存在し、別の目的があります:「サブミットされたRunnableタスクを実行するオブジェクト」。署名は一致せず(execute(Runnable):void)、機能的なインターフェースすらありません。 Runnableは存在しますが、スレッドコンテキストに強くリンクされています。 パッケージがあるjava.lang、ありませんjava.util.function。 javadocの状態:「Runnableインターフェイスは、インスタンスがスレッドによって実行されることを意図しているクラスによって実装する必要があります」。 「Runnable」という名前は、スレッド内で実行中のコードを示唆しています。

8
try ...最終的にcatch節なしで使用するのはなぜですか?
プログラムの古典的な方法はtry ... catchです。tryなしで使用するのが適切なのはいつcatchですか? Pythonでは、以下は正当であると思われ、意味をなします。 try: #do work finally: #do something unconditional ただし、コードはcatch何もしませんでした。同様に、Javaでは次のように考えることができます。 try { //for example try to get a database connection } finally { //closeConnection(connection) } 見た目が良く、突然例外の種類などを心配する必要はありません。これが良い習慣である場合、いつ良い習慣ですか?あるいは、これが良い習慣ではない、または合法でない理由は何ですか?(ソースをコンパイルしませんでした。Javaの構文エラーの可能性があるため、質問しています。Pythonが確実にコンパイルされることを確認しました。) 私が遭遇した関連する問題はこれです:私は関数/メソッドを書き続け、最後に何かを返さなければなりません。ただし、到達してはならない場所にある可能性があり、戻りポイントである必要があります。したがって、上記の例外を処理したとしてもNULL、コード内の到達すべきでないポイント(多くの場合はメソッド/関数の終わり)で、空の文字列を返すか、空のままにします。私は常にコードを再構築し、そうする必要がないようにしていますreturn NULL。なぜなら、それは絶対に良い習慣ではないように見えるからです。

15
JavaがC ++よりも高速になるのはなぜですか?
ベンチマークでJavaがC ++よりも優れている場合があります。もちろん、C ++のパフォーマンスが優れている場合もあります。 次のリンクを参照してください。 http://keithlea.com/javabench/ http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ http://blog.cfelde.com/2010/06/c-vs-java-performance/ しかし、これはどのように可能ですか?解釈されたバイトコードは、コンパイルされた言語よりも高速である可能性があるということを、私の心を揺さぶります。 誰か説明してもらえますか?ありがとう!
79 java  c++  performance 


11
Javaで文字列が不変なのはなぜですか?
その理由を理解できませんでした。私は常に他の開発者のようにStringクラスを使用しますが、その値を変更すると、Stringの新しいインスタンスが作成されます。 JavaのStringクラスの不変性の理由は何ですか? StringBufferやStringBuilderのような代替手段があることを知っています。それは単なる好奇心です。

11
Javaオブジェクトが参照されなくなった直後に削除されないのはなぜですか?
Javaでは、オブジェクトに参照がなくなるとすぐに削除の対象になりますが、JVMはオブジェクトが実際に削除されるタイミングを決定します。Objective-Cの用語を使用する場合、すべてのJava参照は本質的に「強力」です。ただし、Objective-Cでは、オブジェクトに強参照がなくなった場合、オブジェクトはすぐに削除されます。なぜこれがJavaに当てはまらないのですか?

13
なぜJavaはゲーム開発により広く使用されないのですか?[閉まっている]
私はゲーム開発者でも何でもありませんが、Javaはゲーム開発にあまり使用されていないことを知っています。Javaはほとんどのゲームで十分に高速である必要があります。いくつかの理由が考えられます。 Javaの専門知識を持つゲーム開発者の不足 優れたゲーム開発フレームワークの欠如 プログラマは、Javaをゲームプログラミング言語として受け入れたくありません。ほとんどの場合、C ++のみを受け入れますか? ゲーム機のサポートなし(PC市場はまだ存在しますが) もちろん、それは他の何かかもしれません。私よりもビジネスをよく知っている人が、ゲーム開発に関してJavaが勢いを得ていない理由を説明できますか?

2
「影付き」Java依存関係とは何ですか?
JVM開発者はこちら。最近、私はIRCチャットルームや、自分のオフィスでさえ、いわゆる「影付き」Javaライブラリについて冗談を言っています。使用のコンテキストは次のようになります。 「このように、XYZに「シェーディング」クライアントを提供します。」 完璧な例は、HBaseのこのJiraの問題です。「シェーディングされた依存関係を持つクライアントアーティファクトを公開する」 だから私は尋ねる:シェーディングされた JAR とは何ですか、「シェーディングされた」とはどういう意味ですか?
75 java  libraries  jvm 

10
Javaではクラスごとに何行が多すぎますか?[閉まっている]
あなたの経験では、Javaの1つのクラスには何行のコードが多すぎるかについての有用な経験則は何ですか? 明確にするために、行数は特定のクラスにあるべきものとそうでないものに使用する実際の標準にさえ近いものではないことを知っています。クラスは、適切なOOP哲学(カプセル化など)を念頭に置いて設計する必要があります。そうは言っても、経験則はリファクタリングの考慮事項の有用な出発点を提供することができます(つまり、「うーん、このクラスには> n行のコードがあります。ある時点でリファクタリングされます」)。 反対に、おそらく、OOP設計を順守し、長さにも関わらず読み取りと保守が可能な非常に大きなクラスの例に遭遇したことはありませんか? これは、関数ごとの行に関する、重複しない関連する質問です。

10
Javaで文字列を使用しないでください?[閉まっている]
コードにセマンティクスを持たせないためにJavaで文字列を使用することを思いとどまらせるブログエントリを見つけました。代わりにシンラッパークラスを使用することをお勧めします。これは、このエントリが問題を説明するために提供する前後の例です。 public void bookTicket( String name, String firstName, String film, int count, String cinema); public void bookTicket( Name name, FirstName firstName, Film film, Count count, Cinema cinema); プログラミングブログを読んだ私の経験では、90%はナンセンスであるという結論に達しましたが、これが有効なポイントかどうか疑問に思っています。どういうわけか私には正しくないように感じますが、プログラミングのスタイルで何がおかしいのかを正確に特定することはできませんでした。


3
「クラスパス例外を伴うGPL」とは実際にはどういう意味ですか?
Oracleは、クラスパス例外を使用して、GPLの下でJava関連のオープンソースコードをすべてライセンス供与しているようです。私が理解していることから、これにより、これらのライブラリを独自のコードと組み合わせて、GPLでカバーする必要のない製品にすることができるようです。 これはどのように作動しますか? これらのクラスを使用できる方法と使用できない方法の例は何ですか? LGPLとは対照的に、この新しいライセンスが使用されたのはなぜですか。LGPLはほとんど同じことを可能にしているように見えますが、よりよく確立され、理解されていますか? LGPLとの違いは何ですか?
70 java  licensing  gpl  lgpl 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.