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

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

5
プログラミングを学ぶときに自分自身を将来保証する[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 3年前休業。 必要に応じて、「将来を見据えた」方法でプログラミングする方法を学びたいです。Windowsが(今のところ)デスクトップOS市場を支配していますが、その言語、フレームワーク、APIなどを学ぶことには明らかに大きな価値があります。これは、新しいデバイスが登場したり、Windowsが足を踏み入れたり(Windows -Windows 8のプレビューはあまり魅力的に見えません...)。 GUI用のJavaなどの非常に移植性の高い言語と組み合わせて、バックエンドロジック/低レベルプログラミングなどのC / C ++に関する確かな知識があることは、ソフトウェア開発の良い基礎になると思いますか?それは、ほとんどのシステムで役立つでしょうか?-私はデスクトップPC、タブレット、電話を話している。
10 java  c++  c  portability 

6
Windowsデスクトップアプリケーションのランタイム/言語を選択するときに考慮すべき要素は何ですか?
すべてのユーザーがWindowsを使用しています。LinuxまたはMacを使用するものもありますが、使用する場合は、Mono、Wine、Parallels、デュアルブートなどを使用できます。 私の開発チーム(自分も含む)は、JavaでのSwingアプリケーションの作成と、C#でのWindowsフォームの作成の両方で幅広い経験を持っています。「広範囲」とは、両方のランタイムで3つ以上のアプリケーションを開発して出荷したことを意味します。アプリケーションはテクニカル分析アプリケーションであるため、データベースの相互作用は穏やかですが、カスタムUIとデータセットのサイズは重いです。 どちらをサポートするかが重荷になっているため、これからどちらのプラットフォームに焦点を当てるかについて本当に決定したいところです(Swingで半年間作業していると、面倒すぎます)再びWindowsフォームに慣れるために(そしてその逆))、私たちはチームの全員がすべてのアプリケーションで作業できるようにしたいと考えています。 Windowsフォームは一般に、認識可能なWindowsアプリケーションを作成するために必要な作業が少なくなります。Javaのスキニングとカスタムコントロールの量は、長年にわたってそれを解決していません。同時に、Swingアプリケーションを使用できないお客様はいません。 Javaは以前、ライブラリと自動ビルドツールの点ではるかに豊富なエコシステムを備えていましたが、急速に変化しています(Javaは低下しておらず、.NETが追いついているだけです)。 マルチプラットフォームが好まれているまれなケースでは、Javaは.NETに勝るものはありません。Monoはすばらしいですが、それでもJavaよりも多くの作業が必要です。 .NETを選択すると、WPFに焦点を当て始めることができますが、F#の使用も開始できます。Javaを選択すれば、RCPに焦点を当て始めることができますが、Scalaの使用も開始できます。 誰かが同様の決定をしなければならなかったのですか?もしそうなら、それは何でしたか、そしてあなたに最も影響を与えたものは何ですか?私が見逃している最大の懸念はありますか? (注意:Programmers.SEには同様の質問が既にいくつかありますが、それらは非建設的であるか、別の角度からです。)

7
Javaのequalsなどのよく理解されたメソッドのドキュメントを書く
equals、compareToなどの広く知られたメソッドにコメントを書くことは良い習慣ですか? 以下のコードを検討してください。 /** * This method compares the equality of the current object with the object of same type */ @Override public boolean equals(Object obj) { //code for equals } 私の会社は、上記のようなコメントを入力することに激怒しています。上記のJavadocコメントは必要ですか?equalsメソッドなど(compare、compareTo)などが何をするのかが明確でよく理解されていませんか? あなたの提案は何ですか?
10 java  comments 

3
マイナーなJVMアップグレードを行うことはどの程度安全ですか?
私は何年にもわたってJVMに取り組んできましたが、JVMのクラッシュを経験したことはほとんどありません...約6か月前までです。 それ以来、2つのJVM障害が原因で約5つのJVMクラッシュが発生しました。Oracleのソリューションは常に同じでした...アップグレード。 各アップグレードは常にポイントリリースとの間で行われます。つまり、Oracleの最新の提案(バグが修正されたことを確認した後)は、1.6u20から1.6u26にアップグレードすることでした。 JVMのマイナーバージョンをアップグレードする必要はありますか? これは膨大な量の回帰テストを必要とする大きなイベントですか、それとも受け入れるべき安全なアップグレードですか?
10 java  oracle  jvm  upgrade 

5
スペイン語コードの管理
スペイン語のクライアントからの新しいプロジェクトがあり、彼のJavaコードとコメント、変数、メソッド名はすべてスペイン語です。 英語に変換して使用することはできません。このような状況で作業したことがある場合、新しい開発を行う必要があるため、このリスクを軽減するために何ができるかをアドバイスできますか? 彼らのJavaプロジェクトには、EJB、Struts、カスタムフレームワーク、および少なくとも合計20万行のコード(最小推定値)を持つ10000を超えるJavaファイルが混在しており、Weblogic Server 10を使用してデプロイされます。 よろしく、Dazzlers
10 java 

2
ゲッターのみのインターフェースはコードの匂いですか?
(私はこの質問を見ましたが、最初の答えはデザインよりも自動プロパティに関するもので、2番目の答えは、データストレージコードをコンシューマから隠すことです。これは、自分のコードが何をしたいのかわからないのですが、他の意見も聞きたいです) 私には2つの非常に類似したエンティティがHolidayDiscountありRentalDiscount、「それが少なくとも続く場合numberOfDays、percent割引が適用される」として長さ割引を表します。テーブルにはさまざまな親エンティティへのアクセス権があり、さまざまな場所で使用されますが、それらが使用される場所には、適用可能な最大の割引を取得するための共通のロジックがあります。たとえば、aにHolidayOfferはの数がありHolidayDiscounts、そのコストを計算するときは、該当する割引を計算する必要があります。レンタルと同じですRentalDiscounts。 ロジックは同じなので一箇所に留めておきたい。これが、次のメソッド、述語、およびコンパレータが行うことです。 Optional<LengthDiscount> getMaxApplicableLengthDiscount(List<LengthDiscount> discounts, int daysToStay) { if (discounts.isEmpty()) { return Optional.empty(); } return discounts.stream() .filter(new DiscountIsApplicablePredicate(daysToStay)) .max(new DiscountMinDaysComparator()); } public class DiscountIsApplicablePredicate implements Predicate<LengthDiscount> { private final long daysToStay; public DiscountIsApplicablePredicate(long daysToStay) { this.daysToStay = daysToStay; } @Override public boolean test(LengthDiscount discount) { return daysToStay >= discount.getNumberOfDays(); …

2
システムのJava部分の外で列挙型を参照するには、文字列またはintを使用する方が良いですか?
私はJavaでの列挙型の使用について私の仕事で議論をしていました。 同僚は、サーバー側で列挙型を使用する場合、必要に応じてそれを参照するために文字列を使用する必要があると主張していました(たとえば、JSからサーバーにデータを送信するとき、またはデータベースに格納するとき)、これははるかに明確であると主張しました開発者にとって、またタイプミスの場合にはすぐに失敗するだろうと主張しました。 これらの場合、列挙型を識別するために常に整数を使用しました。それは不変の識別子であり、大文字と小文字の違いやタイプミスの問題がないためです(開発者が1ではなく2を使用するというミスを犯したとしても、すぐには失敗しません)。 これらの引数について非常に分析的であるので、文字列を使用する方が良いと思いますが、私はそれについて不思議な気持ちになります(まるで良いアプローチではなかったかのように)。 この議論に関して私を導くことができるベストプラクティスはありますか? 編集:可能な場合は常に列挙型自体を使用するため、すべてのJavaコードは列挙型を使用します。「enumへの参照」とは、JavaScriptからサーバーにデータを交換するとき、またはデータベースにデータを格納するときに、enumの値を参照することを意味します


1
サンプルデータを使用してアルゴリズムを適切に文書化する方法
アルゴリズムのドキュメントには何を含める必要があるのでしょうか。従うべき適切なガイドラインが見つかりません。含めることを心に留めています アルゴリズムの要約 アルゴリズムの説明 フローチャート 疑似コード 入力データセットのサンプル(複数) 出力データ 単体テスト 実験 クライアントは次のような文書を要求します。自社の数値に自信を持たせるとともに、プロセスを見込み顧客に説明して、計算をチェックおよび検証するための手順を踏んでいることを顧客に説明します。 そのようなドキュメントはどのように見えますか?(PDFの例) このドキュメントに何を追加しますか? 私が列挙したものはそれで良いですか、またはこれはどういうわけか異なって文書化されるべきですか? このようなドキュメントサンプルをGoogleでどのように検索しますか?

1
Guiceの@ImplementedByアノテーションの背後にある動機は何ですか?
最近@ImplementedBy、Google Guiceで利用できるアノテーションについて読みました。プログラマーは、依存関係注入で将来使用するために、インターフェースとその実装の間のバインディングを指定できます。これは、ジャストインタイムバインディングの例です。 次の構文を使用して、モジュールで明示的なバインディングを定義することに慣れています。 bind(SomeInterface.class).to(SomeInterfaceImplementation.class); ドキュメントによると、これは次の@ImplementedByアノテーションの使用と同等です。 @ImplementedBy(SomeInterfaceImplementation.class) public interface SomeInterface { //method declarations } ここでわかる唯一の利点は、コードがわずかに短いことです。同時に、このアプローチには、同じドキュメントで正しく指摘されている欠点があります。 @ImplementedBy慎重に使用してください。インターフェイスからその実装にコンパイル時の依存関係を追加します。 そのような依存関係は多くの場合問題にはならないかもしれませんが、私は個人的にそれをコードのにおいとして見ています。 @ImplementedByアノテーションを使用する価値のあるユースケースは何ですか? 1つの可能な方法は、ライブラリまたはフレームワークのコードで使用することです。ドキュメントで説明されているように、アノテーションは明示的なバインディングによって簡単にオーバーライドされるデフォルトのバインディングを提供できます。 タイプがbind()(最初の引数として)ステートメント内にあり、@ImplementedBy注釈がある場合、そのbind()ステートメントが使用されます。このアノテーションは、バインディングでオーバーライドできるデフォルトの実装を提案しています。 このようにして、ライブラリの開発者として、クライアントコードのどこかでカスタマイズできるすぐに使えるバインディングをユーザーに提供できます。 これが注釈が存在する唯一の理由ですか?それとも私が見逃しているものはありますか?ライブラリ/フレームワークを拡張するのではなく、いくつかのビジネスロジックを処理するアプリケーションだけのコードでそれを使用することで何かを得ることはできますか?

4
Javaで区切られた文字列を分割する最も簡単な方法
区切られた文字列で複数列のソート機能を提供するコンパレータを構築しています。私は現在、生の文字列をトークンに分割するための好ましい選択肢として、Stringクラスのsplitメソッドを使用しています。 これは、生の文字列を文字列配列に変換するのに最適な方法ですか?何百万もの行を並べ替えるので、アプローチが重要だと思います。 それはうまく動作するようで非常に簡単ですが、Javaでより高速な方法があるかどうかは不明です。 これが私のコンパレータでのソートの仕組みです: public int compare(String a, String b) { String[] aValues = a.split(_delimiter, _columnComparators.length); String[] bValues = b.split(_delimiter, _columnComparators.length); int result = 0; for( int index : _sortColumnIndices ) { result = _columnComparators[index].compare(aValues[index], bValues[index]); if(result != 0){ break; } } return result; } さまざまなアプローチのベンチマークを行った後、信じられないかもしれませんが、splitメソッドは最新バージョンのJavaを使用するのが最も速かったです。ここに私の完成したコンパレータをダウンロードできます:https : //sourceforge.net/projects/multicolumnrowcomparator/

4
Javaのインスタンスの置き換え?
したがって、私は現実の世界(学術プロジェクト以外)でのプログラミングにかなり慣れていinstanceofないため、特定のオブジェクトがどのクラスであるかを判断するために使用することは悪いことだと多くの投稿に出くわしました。 私の状況では、3つのクラスがあります。1つは基本製品クラスで、もう1つはそれを拡張し、もう1つはそれを拡張します。これらはすべてデータベースの同じテーブルに格納されており、データを取得するためにそれぞれのメソッドを使用する必要があるコードがいくつかあります。 この方法で回避するためのベストプラクティスは何ですか?ポリモーフィズムについていくつか読んだことがありますが、私が抱えている問題を解決する例は見つかりません。通常、これらはすべて、異なるオブジェクトから異なるものをプルする必要があるため機能しないメソッドをオーバーライドします。 これを行うためのより良い方法はありinstanceofますか、それともオブジェクトに固有のフィールドを取得するための使用または何らかの反射で立ち往生していますか?


11
Webアプリケーションを作成するには、htmlとjavascriptを学ぶ必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 私は経験豊富なJavaプログラマーであり、動的なページや描画などを必要とする複雑なWebアプリケーションを作成したいと考えています(例としてSOを取り上げます)。このようなアプリケーションを作成するには、javascript / htmlを学ぶ必要がありますか? 別の言語を学びたくないということではありませんが(以前にこれを行ったことがあります)、JavaScript環境のテクノロジーは急速に変化しているように見えるため、1つのフレームワークの学習を終了すると、すでに時代遅れです。私はウェブ開発用のいくつかのJavaフレームワーク(スプリング、プレイ)をチェックしましたが、深くは確認していません。それで、これらのフレームワーク(または私が知らない他の可能なJavaフレームワーク)は、html / javascriptを学習せずに使用できますか?また、Pythonの経験もあります。したがって、Pythonでアプリを実行できる場合は、それもオプションです。


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