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

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

8
JSFは高性能Webアプリケーションを配信する準備が本当に整っていますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私はJSFについて多くの良い話を聞いたことがありますが、私が知っている限りでは、人々が過去にこの技術に多くの深刻な不満を抱いていたこともあります。私たちは、JSFをソーシャルネットワークプロジェクトの有望なテクノロジーと考えています。しかし、JSFのパフォーマンススコアを認識しておらず、JSFを使用していた既存の高性能Webサイトに実際に出くわすこともできませんでした。人々はパフォーマンスのスケーラビリティの問題に不満を持っています。 jsfを選択することで正しいことを行っているかどうかはまだよくわかりません。したがって、このことについてすべてお聞きになり、入力を考慮したいと思います。 ソーシャルネットワーキングサービスの高性能ニーズを満たすようにJSFを構成することは可能ですか?また、JSFの現在の問題でどの程度まで生き残ることができるのか。問題は何ですか? 私はない 私の個人的な経験のとおり、私はそれがすべて真実ではないと考えているので、他の人が普通に文句を言う何JSFと開発の複雑さを心配したが、私はより多くのものを、パフォーマンスとスケーラビリティの問題が心配です。また、以前のバージョンにリンクされている古い問題で悪用しないでください。過去に何があったとしても、私は現在の状態に関心があるだけです。

12
JavaがC ++などの他の言語よりも移植性が高いと考えられるのはなぜですか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 Java開発者向けの「各プラットフォーム用の特定のJREの作成」とC ++向けの「各プラットフォーム用のC ++コンパイラの作成」の違いは何ですか?
16 java  c++  portability 

6
java.lang.Stringが最終的なものではなかった場合、どうなりますか?
私は長い間Java開発者であり、最終的に、専攻した後、認定試験を受けるためにそれをきちんと勉強する時間があります。セキュリティの問題と関連するものについて読んだとき、私はそれを理解します...しかし、真剣に、誰もがその本当の例を持っていますか? たとえば、Stringがファイナルでない場合はどうなりますか?Rubyにはないように。Rubyコミュニティからの苦情は聞いていません...そして、その動作(4行のコード)を実装するために自分で実装するか、Webで検索する必要があるStringUtilsと関連クラスを知っています。喜んで。
16 java  security 

5
JavaでScalaを使用する理由
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私は完全に言語としてScalaに興味がありますが、それでも、どの会社もJavaからScalaに切り替える必要があるのか​​ということに苦労しています。ScalaはJVMの上にある単なるシンタックスシュガーですか、それともScalaにJavaよりも根本的な改善があり、実際のアプリケーションを改善するでしょうか?
16 java  scala 

20
デッドコードを書くことは有用ですか?
デッドコードを書くのは便利だと思いますか? 「何らかの操作を行う2つのロジックがある場合、他のロジックコードをコメント化したり、コードを削除したりする代わりに、操作に影響しないためデッドコードにする」と言う人もいます。 例:- if(true){ // logic - 1 } else { // logic - 2 // dead code } 本当ですか? 私は通常、デッドコードを書くのではなく、2番目のロジックを削除するだけです。
16 java 

4
コマンドラインオプションスタイル-POSIXまたは何?
どこかで、次のようなWindowsスタイルとUnixスタイルの混在を使用したjava / javacに対する暴言を見ました java -classpath ... -ea ... Something 私見、それはミックスではありません、それはちょうどfind作品のようでもありませんか?知る限り、POSIXによると、構文は次のようになります。 java --classpath ... --ea ... Something そして-abcdef、一度に6短いオプションを指定することを意味します。どのバージョンが一般的にタイピングとエラーの減少につながるのだろうか。 私はJavaで小さなユーティリティを書いていますが、/a /b主にUnixに興味があるので、Windowsスタイルを使用するつもりはありません。どのスタイルを選ぶべきですか?

4
Javaのクラス変数とインスタンス変数の違いは何ですか?[閉まっている]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して詳細を追加し、問題を明確にします。 4年前に閉鎖されました。 私はJavaが初めてなので、クラス変数とインスタンス変数の違いを理解したいと思っています。 例えば: class Bicycle { static int cadence = 0; int speed = 0; int gear = 1; } インスタンス変数とクラス変数はどう違うのですか?ここでどの変数がクラス変数であり、どの変数がインスタンス変数ですか?これはスコープにどのように影響しますか?
16 java  class  object  instance 

5
Javaで初期化ブロックを使用する必要がありますか?
私は最近、これまで見たことのないJavaコンストラクトに出会い、それを使用すべきかどうか疑問に思っていました。初期化ブロックと呼ばれるようです。 public class Test { public Test() { /* first constructor */ } public Test(String s) { /* second constructor */ } // Non-static initializer block - copied into every constructor: { doStuff(); } } コードブロックは各コンストラクターにコピーされます。つまり、複数のコンストラクターがある場合、コードを書き換える必要はありません。 ただし、この構文を使用する主な欠点は3つあります。 複数のコードブロックを定義でき、記述された順序で実行されるため、コードの順序が重要なJavaの非常にまれなケースの1つです。これは、コードブロックの順序を変更するだけで実際にコードが変更されるため、私にとって有害なようです。 私はそれを使っても何の利点もありません。ほとんどの場合、コンストラクターは事前定義された値を使用して相互に呼び出します。そうでない場合でも、コードを単純にプライベートメソッドに入れて、各コンストラクターから呼び出すことができます。 ブロックをクラスの最後に配置でき、コンストラクタは通常クラスの先頭にあるため、読みやすさが低下します。コードファイルのまったく異なる部分を見る必要があると思わない場合は、直観に反します。 上記の記述が正しい場合、この言語構​​造が導入された理由(およびその時期)は?正当な使用例はありますか?
16 java 

6
近似等式を使用したフロートハッシュの実装方法
次のPythonクラスがあるとしましょう(問題はJavaにもequalsandと同じように存在しますhashCode) class Temperature: def __init__(self, degrees): self.degrees = degrees ここでdegrees、フロートとしてのケルビンの温度です。今、私はのための平等のテストやハッシュを実装したいTemperatureという方法で、 直接等価テストではなく、イプシロンの差までフロートを比較します。 をa == b意味する契約を尊重しhash(a) == hash(b)ます。 def __eq__(self, other): return abs(self.degrees - other.degrees) < EPSILON def __hash__(self): return # What goes here? Pythonのドキュメントでは、数値をハッシュすることについて少し説明してhash(2) == hash(2.0)いますが、これはまったく同じ問題ではありません。 私は正しい軌道に乗っていますか?もしそうなら、この状況でハッシュを実装する標準的な方法は何ですか? 更新:現在、フロートのこのタイプの等価テストでは==、との推移性が排除されていることを理解していequalsます。しかし、フロートを直接比較するべきではないという「常識」とどのように結びついているのでしょうか?浮動小数点数を比較して等値演算子を実装すると、静的解析ツールが文句を言います。彼らはそうする権利がありますか?

1
Javaロガー:静的ブロックの初期化または変数宣言での初期化
現在、私のプロジェクトでは次の方法でロガーを使用しています。 private static final Logger LOGGER; static{ LOGGER = logger.getLogger(); } 静的ブロックを使用してロガー変数を初期化するためのコードレビューを受けました。宣言文自体でロガー変数を初期化するように言われました。 private static final Logger LOGGER = Logger.getLogger(); 静的ブロックで初期化しないと、どのような違いが生じるかを把握しようとしています。これが実践かどうか知りたい。
15 java 

5
if条件付きでのset.add()のブール戻り値?
セットクラスのadd演算子は、ブール値を返します。ブール値は、追加する要素がまだ存在しない場合はtrue、そうでない場合はfalseです。書いています if (set.add(entry)) { //do some more stuff } きれいなコードを書くという点で良いスタイルと考えられていますか?あなたは一度に2つのことをするので、私は疑問に思っています。1)要素を追加し、2)要素が存在したかどうかを確認します。

4
Javaでnullチェックを行わずに値を取得する
多くの場合、データ階層から値をフェッチするときにNullPointerExceptionsを回避するためにnullチェックを行います。NullPointerExceptionsはエラーを起こしやすく、多くの定型文を必要とします。 オブジェクトを取得するときにnullチェックをスキップできる非常に単純なルーチンを作成しました... public final class NoNPE { public static <T> T get(NoNPEInterface<T> in) { try { return in.get(); } catch (NullPointerException e) { return null; } } public interface NoNPEInterface<T> { T get(); } } 私はこのように少し使います... Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom()); 上記の結果、すべての親レベルをnullチェックする必要なく、Roomオブジェクトまたはnullが取得されました。 上記についてどう思いますか?問題のあるパターンを作成していますか?あなたの意見ではこれを行うより良い方法はありますか?
15 java  null 

3
マイクロサービス間でDTOオブジェクトを共有する
TL; DR-サービス間でPOJOライブラリを共有しても大丈夫ですか? 一般的に、可能な場合は、サービス間の共有を厳密に制限します。データを共有しているサービスが、クライアントが使用するクライアントライブラリを提供するかどうかについては、いくつかの議論がありました。client-libは通常、サービスのクライアントが使用するオプションであり、client-libを使用するか、代替言語を使用してライブラリなどの一般的な側面を使用するかを問わず、APIを消費できます。 私の場合、データのオブジェクトを作成するサービスを検討しています。このオブジェクトがPETであると仮定しましょう。これはデータベースエンティティではなく、厳密に基になるデータを暗黙的に表すPOJOです。このPOJOは、APIが定義したものです。想定:ペット-年齢、体重、名前、所有者、住所、種など サービス1 -PetKeeper:何らかの理由でペットを生成し、すべてのデータを保持し、このサービスを参照してペットを取得するか、ペットに変更を加え、名前の変更または住所の変更を行う必要がありますこのサービスへのAPI呼び出し。 サービス2 -PetAccessor:このサービスはペットを収集し、検証チェックを行います サービス3,4-より多くの中間サービス呼び出し サービス5-ユーザーインターフェイス これらは非常にarbitrary意的ですが、ポイントは簡単です。UIまたはユーザー向けのサービスは、何らかの方法でこの「PET」オブジェクトを提示したいと考えています。APIを介してサービスを呼び出す必要があります。サービスは、サービスを呼び出し、サービスを呼び出すなど、必要な情報を収集してリレーバックを開始するサービスに到達するまで呼び出します。最後に、UIサービスには表示するPETオブジェクトがあります。 これは非常に一般的ですが、絶対的な考え方で、すべてのサービスでPETオブジェクトを複製しました。DRY(繰り返さないでください)の原則は、サービス内のコードにのみ適用され、サービス全体には適用されませんが、ポイントはまだあります。フィールドを追加したらどうなりますか...それぞれのPOJOの5つのサービスを変更する必要があります。 -または-APIからのpojoの一部を含むPet-Objects-Libraryを提供できます。各サービスはライブラリにインポート/依存できます。サービス自体への依存関係はありませんが、一般的なライブラリのみに依存しています。各サービスが同じタイプのオブジェクトを持ち、更新が簡単になるように、私はこのアイデアが好きです。しかし、私はGod-Objectsを心配しています。 賛否両論-最適な設計は何ですか?同じPOJOクラスの繰り返しを最小限に抑えながら分離されたままにするために、サービス間でデータを渡すために何をしましたか?

1
Consumer / ProducerとObserver / Observableの違い
私は、次の3つの部分で構成されるアプリケーションの設計に取り組んでいます。 特定のイベントの発生(ファイルの作成、外部リクエストなど)を監視する単一のスレッド これらのイベントを処理することでこれらのイベントに応答するN個のワーカースレッド(各ワーカーは単一のイベントを処理して消費し、処理に時間がかかる場合があります) これらのスレッドを管理し、エラー処理を行うコントローラー(スレッドの再起動、結果のログ記録) これは非常に基本的で実装するのは難しくありませんが、それを行うための「正しい」方法は何だろうと思っています(この具体的なケースではJavaですが、より高い抽象化の答えもありがたいです)。2つの戦略が思い浮かびます。 Observer / Observable:監視スレッドはコントローラーによって監視されます。イベントが発生した場合、コントローラーに通知され、再利用可能なキャッシュスレッドプールから新しいタスクを空きスレッドに割り当てることができます(または、すべてのスレッドが現在ビジーである場合、FIFOキューでタスクを待機してキャッシュします)。ワーカースレッドはCallableを実装し、結果(またはブール値)で成功を返すか、エラーを返します。その場合、コントローラーは何をすべきかを決定します(発生したエラーの性質に応じて)。 プロデューサー/コンシューマー:監視スレッドはコントローラーとBlockingQueueを共有し(イベントキュー)、コントローラーはすべてのワーカーと2つを共有します(タスクキューと結果キュー)。イベントの場合、監視スレッドはタスクオブジェクトをイベントキューに入れます。コントローラーは、イベントキューから新しいタスクを取得し、それらをレビューして、タスクキューに入れます。各ワーカーは新しいタスクを待機し、タスクキュー(先着順、キュー自体で管理)からそれらを取得/消費し、結果またはエラーを結果キューに戻します。最後に、コントローラーは結果キューから結果を取得し、エラーが発生した場合に対応する手順を実行できます。 両方のアプローチの最終結果は似ていますが、それぞれわずかな違いがあります。 オブザーバーを使用すると、スレッドの制御は直接行われ、各タスクは特定の新しく生成されたワーカーに割り当てられます。スレッド作成のオーバーヘッドは高くなる可能性がありますが、キャッシュされたスレッドプールのおかげではありません。一方、Observerパターンは、複数ではなく単一のObserverに縮小されます。これは、厳密に設計されたものではありません。 キュー戦略は拡張が容易なようです。たとえば、1つではなく複数のプロデューサーを追加するのは簡単で、変更を必要としません。欠点は、作業をまったく行わない場合でも、すべてのスレッドが無期限に実行され、エラー/結果の処理が最初のソリューションほど洗練されていないことです。 この状況で最もふさわしいアプローチは何ですか?その理由は?ほとんどの例は、Observerケースの新しい値で多くのウィンドウを更新したり、複数のコンシューマーとプロデューサーで処理したりするなど、明確なケースのみを扱っているため、この質問に対する答えをオンラインで見つけるのは難しいと感じました。どんな入力でも大歓迎です。

6
TDDの最初のテストで大丈夫だと思うオブジェクトを作成しています
私はTDDにかなり慣れていないので、実装コードの前に来る最初のテストを作成するときに問題があります。実装コードにフレームワークがなければ、私は最初のテストを自由に書くことができますが、Java / OOの問題に対する考え方によって常に汚染されているようです。 たとえば、私のGithub ConwaysGameOfLifeExampleで最初に書いたテスト(rule1_zeroNeighbours)では、まだ実装されていないGameOfLifeオブジェクトを作成することから始めました。存在しないsetメソッド、存在しないstepメソッド、存在しないgetメソッドを呼び出し、アサートを使用しました。 テストはさらにテストを書いてリファクタリングするにつれて進化しましたが、元々は次のようなものでした: @Test public void rule1_zeroNeighbours() { GameOfLife gameOfLife = new GameOfLife(); gameOfLife.set(1, 1, true); gameOfLife.step(); assertEquals(false, gameOfLife.get(1, 1)); } この最初のテストを書くためにこの初期段階でどのように決定したかに基づいて実装の設計を強制していたので、これは奇妙に感じました。 あなたがTDDを理解する方法でこれは大丈夫ですか?私はテストと実装がリファクタリングによって時間とともに進化したという点でTDD / XPの原則に従っているようです。この方法で開始することにより、ソリューション。 TDDは他にどのように使用されますか?GameOfLifeオブジェクトなしで、プリミティブと静的メソッドのみで開始することにより、リファクタリングの反復をさらに行うことができましたが、それはあまりにも不自然に思えます。

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