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

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

5
変更された戦略設計パターン
私は最近、デザインパターンの調査を開始しましたが、コーディングしていることの1つは、小さな違いを除いて、戦略パターンに完全に適合します。 基本的に、私のアルゴリズムの一部(すべてではない)には、追加のパラメーターまたは2つを渡す必要があります。 だから私はどちらかをする必要があります 計算メソッドを呼び出すときに追加のパラメーターを渡します または それらをConcreteAlgorithmクラス内の変数として保存し、アルゴリズムを呼び出す前にそれらを更新できるようにします。 このニーズに合ったデザインパターンはありますか/戦略パターンにこだわってこれを実装するにはどうすればよいですか? クライアントオブジェクトをすべてのアルゴリズムに渡し、変数をそこに格納し、特定のアルゴリズムで必要な場合にのみ使用することを検討しました。しかし、これは扱いにくく、戦略パターンのポイントを打ち負かすと思います。 明確にするために、私はJavaで実装しているので、オプションのパラメーター(これをうまく解決できる)の贅沢はありません。

9
コード文書の生産性の向上/損失に関する研究
多くの検索を行った後、ソフトウェア開発の世界で知られていると思われるものに関する基本的な質問に答えることができませんでした。 知られていること: 適切なコードドキュメント(Doxygenタグ、Javadoc、または単なるコメントの豊富さ)に厳格なポリシーを適用すると、コードの開発に必要な時間がオーバーヘッドになります。 だが: 徹底的なドキュメント(またはAPI)を持っていると、新しい開発者やベテランの開発者が機能を追加したり、バグを修正したりするときに生産性が向上(想定)します。 質問: そのようなドキュメントを保証するために必要な追加の開発時間は、将来の生産性の向上によって相殺されますか(厳密に経済的な意味で)? ケーススタディ、または導き出される結論を裏付ける客観的な証拠をもたらすことができる答えを探しています。 前もって感謝します!

4
プラットフォーム独立とは何ですか?クロスプラットフォームと「プラットフォームの独立性」は同じですか?
プラットフォームの独立性とはどういう意味ですか?言語プラットフォームを独立と呼ぶ基準は何ですか?クロスプラットフォームと「プラットフォームの独立性」は同じですか? (これは自習用の質問かもしれませんが、スタックオーバーフローの専門家から聞きたいと思います。インターネットに関するそれに関する多くの定義と見解があり、それらのいくつかは混乱しています)

4
どのJavaベースのWeb UIフレームワークを使用しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 改札 クリック GWT ヴァーディン 私が理解しているように、これらのフレームワークはすべて、多くのhtml / javascriptを実行することなく、java(すべての利点)を使用してguiコンポーネントを作成できるようにします。 技術的な要因を考慮するだけでなく、急速に人気を集めているものがあるかどうかも聞きたいです。特定のフレームワークがパックのリーダーになりつつありますが、これも決定に影響します。

3
JavaのCollectionインターフェースを使用する正当な理由はありますか?
そのインターフェイスの特定の実装に縛られないように、利用可能な最も一般的なインターフェイスを使用すべきだという議論を聞いたことがあります。このロジックはjava.util.Collectionなどのインターフェースに適用されますか? 私はむしろ次のようなものを見たいです: List<Foo> getFoos() または Set<Foo> getFoos() の代わりに Collection<Foo> getFoos() 最後のケースでは、どの種類のデータセットを扱っているのかわかりませんが、最初の2つのインスタンスでは、順序付けと一意性についていくつかの仮定を立てることができます。DOES のjava.util.Collectionはセットとリストの両方のための論理的な親であることの有用性の外側を持っていますか? コードレビューを行うときにCollectionを使用するコードに出くわした場合、その使用法が正当であるかどうかをどのように判断し、より具体的なインターフェイスに置き換えるためにどのような提案をしますか?

5
GWTについてどう思いますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私はこの期間にJavaを学び、チュートリアルを終えたばかりなので、プロジェクトに貢献し始める準備ができていると思います(経験から、これが本当に学ぶための最良の方法だからです)。 GWTを見たことがありますが、おもしろそうなので、試してみようと思いました。ただし、GWTはJavaScriptでJavaアプリケーションをデプロイするため、実際のことを学習できるのにGWTを学習する必要があるのはなぜかと考えています(これがJavaScriptです)。私の質問:それは価値がありますか?JavaやGWTを使用する代わりに、JSアプリケーションを構築したい場合、JavaScriptを習得した方がいいでしょう。GWTを使用して特定のものを構築する方が簡単かもしれませんが、最終的にはそれだけの価値があると思いますか? ありがとう。
11 java  javascript  gwt 

10
大学のCSコース用のJavaまたはC ++?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私は、CSの学位を取得するために学校に入学するのが苦手です。私が見ている学校は、入門的なソフトウェア開発コース(オブジェクト指向プログラミング、設計パターン、そのようなこと)のためにJavaベースとC ++ベースの両方を実際に提供しています。追跡するトラックは学生が選択しますが、追跡する時間はあります。 あなたが今知っていることを知っていて、あなたに選択があったなら、あなたはJavaまたはC ++でCSカリキュラムの基礎を築くでしょうか? 私の現在の議論は現在次のようになっています。 良い友人(AIの博士号を持っている)は、後で仕事の機会を広げるためだけに、私が何をするかに関係なくJavaをより良い選択肢として売り込んでいますが、彼の仕事はすべてJavaすき)。私は米国マサチューセッツ州ボストンに住んでいますが、JavaとCの仕事量は同じです。 反対に、終了した時点で学位をどうするかについてはまだ完全には決着していませんが、私の好みはMac向けに開発することです。そのため、C ++にはすでにある程度の露出がありますが、Javaを使用していないため、私の仕事で自分のプロジェクトを見ていると、すぐにそれを使用する必要がありません。少なくとも2年。 私はおそらく20年後に学校に戻る大人であることに注意する必要があります(私は現在、どんな種類の学位も持っていません)ので、できる限り最大限の機会と時間を費やすことを目指しています。私はC ++に傾いていますが、私はまだあいまいであり、外部の客観的なアドバイスがここで役立ちます。 または、私はそれについて考えすぎているかもしれません。 更新:言語の選択は、当初考えていたほど明確ではなかったことがわかりました。いくつかのコアコースはJavaに焦点を当てていますが、他のコアコースのいくつかは主にCとJavaで動作しますが、他のいくつかは適切な方法でスローされます。実際、私の学期の残りは、JavaとJavascriptで時間を過ごした後、Objective-Cになります。前学期は、C、Javascript、およびPHPに加えて、割り当てが必要になったために投げ込まれた他のいくつかの学期でした。全体がほぼ真ん中に分かれていて、これに対する答えがまだ得られているので、現在、学位の要件をすべて満たすようにカリキュラムを作成しようとしていますが、合理的に処理できる限り多くの言語を吸収しています。これまでのところ、私の成績はこれをしようとして苦しんでいません。
11 java  c++  education 

5
JVMとJavaのWORAは、他の高レベル言語とどのように違いますか?
Javaの世界では、JVMについてよく話しますが、Javaが新しくなったとき、おそらく「Write Once、Run Anywhere」というキラー機能がありました。 人々が話したり書いたりする方法からすると、これは、たとえばPythonが機能する方法とは異なるようです。しかし、私が書いたPythonコードが別のマシンで異なる方法で動作することを認識していません。(私はそれほど多くのPythonを書いていませんが。) だから私は何が欠けていますか?JVMはPythonインタープリターとどう違うのですか?PythonにJavaのプラットフォームに依存しない方法はありますか?または、これは単なる文化的な違いですか?

3
Java 8では、メソッド参照式や、関数型インターフェースの実装を返すメソッドを使用するほうが文法的に優れているでしょうか?
Java 8では、関数型インターフェイスの概念と、関数型インターフェイスを取るように設計された多数の新しいメソッドが追加されました。これらのインターフェースのインスタンスは、メソッド参照式(例SomeClass::someMethod)とラムダ式(例(x, y) -> x + y)を使用して簡潔に作成できます。 同僚と私は、どちらのフォームを使用するのが最適かについて意見が異なります(この場合、「最適」は、「最も読みやすい」と「標準的な慣行に最も近い」に要約されます。同等)。具体的には、次のすべてが当てはまる場合です。 問題の関数は単一のスコープの外では使用されません インスタンスに名前を付けると、読みやすさが向上します(たとえば、ロジックが何が起こっているかを一目で確認できるほど単純であるのとは対照的) ある形式が他の形式よりも好まれるプログラミング上の理由は他にはありません。 この問題についての私の現在の意見は、プライベートメソッドを追加し、それをメソッド参照で参照することが、より優れたアプローチであるというものです。これはこの機能がどのように使用されるように設計されているかのように感じられ、メソッド名とシグネチャを介して何が起こっているかを伝える方が簡単に思われます(たとえば、「boolean isResultInFuture(Result result)」は明らかにブール値を返すと言っています)。また、クラスの将来の拡張で同じチェックを利用したい場合に、プライベートメソッドを再利用しやすくしますが、機能インターフェイスラッパーは必要ありません。 私の同僚の好みは、インターフェイスのインスタンスを返すメソッドを用意することです(たとえば、 "Predicate resultInFuture()")。私には、この機能の使用方法が完全ではないように感じられ、少し不格好に感じられ、名前を付けることで意図を実際に伝えるのが難しいように思われます。 この例を具体的にするために、異なるスタイルで記述された同じコードを次に示します。 public class ResultProcessor { public void doSomethingImportant(List<Result> results) { results.filter(this::isResultInFuture).forEach({ result -> // Do something important with each future result line }); } private boolean isResultInFuture(Result result) { someOtherService.getResultDateFromDatabase(result).after(new Date()); } } …

2
引数が必要な場合と必要でない場合がある場合に、メソッドの引数としてOptionalを使用しない理由はありますか?
Java 8では、オプション/オプションの使用に関する記事がますます増えています。私は彼らが何を表現しようとしているのか理解しており、それらがリターンとして使用されている多くの例を見ています。ただし、デフォルト/オプションのパラメーターの構文を持たない言語でメソッド/関数の引数として使用されているのはわかりません。 Optional引数が必要かどうかにかかわらず、メソッドの引数として使用しない理由はありますか?ここに私が考えることができる例があります: Optional<Customer> lookupCustomer(String firstName, Optional<String> middleName, String lastName)

3
コードで抑制警告を使用することは良い習慣ですか?
私は@SuppressWarnings("unchecked")、@SuppressWarnings("null")ほとんどの場合上記の方法を使用して、警告なしでコードをコンパイルできるようにしていますが、疑問があります。このStackoverflowの質問が見つかりました。ジョン・スキートが興味深い答えを書いてくれました。 彼によると、 時々、Javaジェネリックスはあなたがやりたいことをさせないだけで、あなたがしていることが本当に実行時に合法であることをコンパイラに効果的に伝える必要があります。 しかし、例外がスローされる可能性がある場合はどうでしょうか?警告を抑制するのは悪い考えではありませんか?問題が表面化する可能性のある場所を意識する必要はありませんか? また、誰かが後で私のコードを変更し、SuppressWarningsを削除せずに疑わしい機能を追加した場合はどうなりますか?それをどのように回避できますか、および/またはこれに他の代替手段はありますか? 私が使用してしなければならない@SuppressWarnings("unchecked")と@SuppressWarnings("null")? アップデート#1 未チェックの型キャストに関する限り、この回答(以下のコメントで@gnatが指摘)によると、これらの警告を抑制することが必要です。 安全でない型キャストの必要性を排除するために、多くの不可欠なJavaライブラリが更新されたことはありません。これらの警告を抑制することは、他のより重要な警告に気づき修正するために必要です。 他の警告を抑制する場合は、まだ少し灰色の領域にあります。 アップデート#2 あたりとして、Oracleのドキュメント(以下もいくつかの回答で述べました): スタイルの問題として、プログラマーは常に、このアノテーションが最も効果的な場所で最も深くネストされた要素に使用する必要があります。特定のメソッドで警告を抑制したい場合は、クラスではなくそのメソッドに注釈を付ける必要があります。

5
Javaパッケージレベルのスコープは役に立ちますか?
私はパッケージスコープの考え方を理解しています。しかし、真剣に使用しようとするたびに、それが役立つと思っていたニーズに合わないことに気づきました。 私の主な問題は常に、私がスコープを制限したいものは決して同じパッケージに入っていないということです。それらは概念的にはすべてリンクされている可能性がありますが、アプリケーション内のデータの論理的な分割では、それらをより大きなパッケージの個別の子パッケージとして扱います。 たとえば、Missionモデルを使用していて、mymissionServicesなどの他のMissionツールのみにいくつかのメソッドを使用させたい場合があります。ただし、最終的にはパッケージとしてMissions.modelsとMissions.servicesが使用されるため、MissionModelとMissionServiceは同じパッケージスコープではありません。昇格されたアクセス許可が必要なものが、パッケージに適切に含まれているにもかかわらず、それらのアクセス許可が不要な多くのものが含まれていないような状況は決してありません。また、メソッドをスコープするパッケージの利点が、すべてを同じパッケージに配置するようにプロジェクトアーキテクチャを変更することを正当化することはほとんどありません。多くの場合、アスペクトまたは何らかの制御の逆転のどちらかが、パッケージのスコープを簡単に検討した問題に対するより優れたアプローチであることが判明します。 私は好奇心が強いのですが、これは一般的にすべてのJava開発者に当てはまると考えられているか、私が行っている作業のほんの一部にすぎません。パッケージスコープは現実世界で多く利用されていますか?それが使用するのに適した形態と考えられる多くのケースがありますか、それとも現代の開発でめったに利用されないレガシーな振る舞いと見なされていますか? パッケージのプライベートスコープがデフォルトである理由については何も尋ねていません。デフォルトに関係なくいつ使用する必要があるかを尋ねています。なぜそれがデフォルトであるかについてのほとんどの議論は、パッケージスコープが実際に役立つ場合には実際には入りません。代わりに、一般的に使用される他の2つのスコープがデフォルトではないはずであるという理由だけを主張して、除去プロセスによってパッケージが勝つようにします。また、現在の開発状況についてお伺いします。具体的には、他のツールやパラダイムによってパッケージのスコープの有用性が低下するところまで開発したので、それをデフォルトにするという決定が理にかなっていたときのことです。
11 java  scope 

4
ロギングを実行にラップするための設計パターン
前書き 処理フレームワークの抽象Javaクラスを実装しています*。関数を実装することでexecute、ビジネスの論理機能を追加することができます。すべての実行関数のすべての実装の最初と最後にロギングを追加したいと思います。また、特定の処理が行われた場合、ロギングの合間にも実行されます。でもこれを一律に作りたい。私の考えは、ロギングを実装executeWithLoggingし、特定の部分にロギングをラップするいくつかの新しい機能を提供する独自の新しいクラスにフレームワーククラスを継承することでした。それが最高のアイデアかどうか、全体がエレガントになるようなデザインパターンを使用できるかどうかはわかりません。全体をどうやって進めますか? 課題(これらを考慮してください!) 私の場合の1つの課題は、元のクラスには1つのexecute関数しかないということですが、複数の部分をログに記録する必要があります。 2つ目は次のとおりです。Decoratorパターンを使用して、私も使用している場合ではなく、かなりの仕事ん(だけでなく、私の最初のアイデアだった)executeので、super.execute()-functionは私の新しいの最初の行で呼び出さなければならないexecute()、そうではありません? 関連する少なくとも4つのクラスがあり、次のようになります。BaseFunctionフレームワークからLoggingFunction extends BaseFunction私から、MyBusinessFunction extends LoggingFunction私から、MyBusinessClassinstanciates MyBusinessFunction。 の最初と最後だけでなくexecute、途中でもロギングが必要です。 「ロギング」は単純なJavaロギングではなく、実際にはデータベースへのロギングです。これは原則については何も変更しませんが、ロギングが単なる1行のコードではない場合があることを示しています。 たぶん、私がすべてを行う方法の例は、私を動かすのにいいでしょう。 | *ストームトライデント関数。ストームボルトに似ていますが、これは特に重要ではありません。

3
関連する一連のプロパティを独自の構造体/クラスにラップすることは良い習慣ですか?
私の質問は強く型付けされた言語に関係しますが、SwiftでUserオブジェクトを作成します。ユーザーは多数のリンク(FacebookProfile、InstagramProfileなど)を持つことができます。これに関するいくつかの質問。 リンクを独自のオブジェクトでラップすることは良い習慣ですか? struct User { var firstName:文字列 var lastName:文字列 var email:string varリンク:リンク } 構造体リンク{ var facebook:string var instagram:文字列 var twitter:文字列 } それともルーズにすべきですか?技術的にはどちらの方法でも問題ないことはわかっていますが、一般的に、特に読みやすさのために、推奨されるアプローチがあるかどうか疑問に思います。 struct User { var firstName: string var lastName: string var email: string var facebookLink: string var twitterLink: string var instagramLink: string } このようなシナリオでは、リンクはコレクション/リストにする必要がありますか?利用可能なリンクオプションの数は決まっているため、リストの数にしないでください。数は増えていません。私の考えは正しいですか? getUsers、getUser、updateUserなどのユーザーオブジェクト内にネットワークメソッドを配置することは良い習慣ですか? これらは主観的である可能性があることは知っていますが、同様の状況でのベストプラクティスを理解しようとしています。任意のポインタをいただければ幸いです。

1
Null-Safe演算子(「Elvis演算子」など)がJava 7の「プロジェクトコイン」の一部として拒否されたのはなぜですか?
Java 7の「Project Coin」に提案された機能の1つは「Elvisオペレーター」でした。2009年のJavaOneプレゼンテーションのレポートプロジェクトコインには、そのように説明しました。 このプレゼンテーションで取り上げられている「小さな機能」の1つは、いわゆる「エルビス演算子」です。これは、3項演算子のより簡潔なバージョンです。伝統的なJavaを使用すると、Groovyの一部の機能が欠けていることに気づきました。これは、追加された場合、両方の言語で使用できる1つの演算子になります。「Elvis」演算子は、評価された式がnullのときに使用できるデフォルト値を指定するのに便利です。Groovyの安全なナビゲーション演算子と同様に、これは不要なnullを回避する方法を指定する簡潔な方法です。NullPointerExceptionを回避する方法については、以前ブログで説明しました。 プロジェクトコインの他の側面は最終的に実装されましたが、これは実装されませんでした。含まれる可能性のある候補としてJavaOneで提示されたにもかかわらず、Elvisオペレーターが最終的に拒否されたのはなぜですか? 明確にするために、私はこのオペレーターについて具体的に尋ねています。このオペレーターが当時真剣に検討されていたため、Java 7の「プロジェクトコイン」の一部として拒否された理由についてです。メーリングリストなどで拒否の理由が議論されているのではないかと思いますが、何も見つかりませんでした。Javaのどのバージョンにも含まれていない理由に関するより一般的な情報がある場合、それは許容されますが、好ましくありません。
10 java  api-design 

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