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

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

4
インターフェースに「オプションのメソッド」を使用してJavaコレクションが実装されたのはなぜですか?
Javaコレクションフレームワークを拡張する最初の実装中に、オプションとして宣言されたメソッドがコレクションインターフェイスに含まれているのを見て驚いた。実装者は、サポートされていない場合、UnsupportedOperationExceptionsをスローすることが期待されています。これはすぐに、貧弱なAPIデザインの選択肢として私を驚かせました。 Joshua Blochの優れた「Effective Java」の本を多く読んだ後、彼がこれらの決定に責任を負う可能性があることを知った後、本で支持されている原則と一致しなかったようです。コレクションと、「オプション」メソッドでコレクションを拡張するMutableCollectionの2つのインターフェイスを宣言すると、はるかに保守性の高いクライアントコードにつながると思います。 ここに問題の優れた要約があります。 2つのインターフェイスの実装の代わりにオプションのメソッドが選択された理由はありますか?

3
これはMockitoのリセット方法の適切な使用ですか?
テストクラスには、よく使用されるBarオブジェクトを作成するプライベートメソッドがあります。Barコンストラクタが呼び出されますsomeMethod()私の嘲笑オブジェクトのメソッドを: private @Mock Foo mockedObject; // My mocked object ... private Bar getBar() { Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod() } 私がチェックしたいテストメソッドのいくつかでは、someMethodその特定のテストによっても呼び出されました。次のようなもの: @Test public void someTest() { Bar bar = getBar(); // do some things verify(mockedObject).someMethod(); // <--- will fail } モックされたオブジェクトがsomeMethod2回呼び出されたため、これは失敗します。私のテストメソッドが私のgetBar()メソッドの副作用を気にしたくないので、終了時にモックオブジェクトをリセットするのは合理的でしょうgetBar()か? private Bar getBar() { Bar …
68 java  mocking 

10
「if」および「while」と一緒に使用する場合、言語が式の周りに括弧を必要とするのはなぜですか?
C、Java、およびC ++のような言語はすべてで使用した場合、式全体の周りに括弧を必要としif、whileまたはswitch。 if (true) { // Do something } とは対照的に if true { // Do something } 括弧が冗長であるため、これは私には奇妙に思えます。この例でtrueは、は単独の式です。括弧は、私が知っている方法でその意味を変えません。なぜこの奇妙な構文が存在し、なぜそんなに一般的ですか?気付いていないのに利点はありますか?

16
プログラマーは、言語とフレームワークをどの程度自由に選択できますか?
私は主にC#指向の会社で働き始めました。JavaとJRubyが好きな人は数人いますが、ここではC#が好きなプログラマーの大部分です。私が雇われたのは、Webアプリケーションの構築に多くの経験を持ち、JRuby on Railsやnodejsのような新しいテクノロジーに傾倒したためです。 私は最近、短時間で多くのことを成し遂げることに重点を置いて、Webアプリケーションを構築するプロジェクトに着手しました。ソフトウェアリーダーは、レールの代わりにmvc4を使用するよう指示しています。私はmvc4を知らない、C#を知らない、そしてWebアプリケーションサーバーとフロントエンドUIを作成する責任があるのは私だけである以外は、それは大丈夫かもしれません。 mvc4を使用する代わりに、私がすでに非常によく知っているフレームワーク(Rails)を使用することは意味がありませんか?この決定の背後にある理由は、技術リーダーがJruby / railsを知らず、コードを再利用する方法がないことでした。 カウンター引数: 彼はコードに貢献することはなく、率直に言って、 このプロジェクトには必要ありません。そのため、彼がJRuby / railsを知っているかどうかは重要ではありません。 JRubyがコードをプルしたり、その逆を行うことができる多くのJavaアプリがあるため、実際にコードを再利用できます。実際、彼はJavaライブラリをJRuby on Railsアプリで実行するだけでなく、JavaライブラリをC#に変換するためのリソースをいくつか用意しています。彼はJavaやJRubyが好きではないからです 多くのWebアプリケーションを作成しましたが、なじみのないものを使用するとスピンアップが発生し、今までのように短時間で素晴らしいアプリケーションを作成することができません。これは問題ありません。この分野では新しい技術を学ぶことが重要です。問題は、このプロジェクトでは、多くのことを迅速に行う必要があるということです。 開発者はどの時点でツールを選択できますか?これは会社に依存していますか?私の会社は嫌ですか、これは正常と考えられていますか?環境に優しい牧草地はありますか?私はこれを間違った方法で見ていますか?

7
IntelliJはEclipseよりも優れていますか?[閉まっている]
私のような質問があった知っているあなたの好みのエディタ/ IDEは何?しかし、それらのどれもこの質問に答えていない:なぜにお金を使うのIntelliJときEclipseは無料ですか! 私は個人的にはIntelliJの大ファンですが、実際にはEclipseを試したことはありません。Java、JSP、HTML / CSS、Javascript、PHP、およびActionscriptのプロジェクトにIntelliJを使用しましたが、最新バージョンの9 はすべてのプロジェクトで優れています。 過去の多くの同僚は、EclipseはIntelliJと「ほぼ同じ」であると信じていると言っていましたが、その点に対抗するために、Eclipseを使用する開発者の後ろに時々座っていました。タスク)、および私はIntelliJでこれを経験していません。それらは機能ごとに並ぶかもしれませんが、機能はユーザーエクスペリエンスの低下によって台無しになる可能性があり、IntelliJが時間を節約する機能を簡単に見つけて発見できる可能性があるのでしょうか。 すでにEclipseに精通しているユーザーにとって、IntelliJの実際のコストに加えて、新しいアプリの学習に費やされる時間のコストもあります。Eclipseには、IDEに250ドルを費やしたくないという多くのユーザーがいます。 IntelliJが私のチームの生産性向上に本当に役立つとしたら、どうすれば彼らにそれを販売できますか?両方を試したユーザーにとって、どちらの方法でも特定の長所または短所に非常に興味があります。
67 java  ide  eclipse  intellij 

4
Haskellの型システムはJavaの型システムと形式的に同等ですか?[閉まっている]
ある言語では他の言語よりも簡単/難しいこともありますが、興味があるのは、ある言語では可能で、別の言語では不可能/無関係なタイプ関連の機能だけです。より具体的にするために、Haskell型の拡張機能を無視しましょう。あらゆる種類のクレイジー/クールなことを行うものが非常に多くあるからです。

21
「キャリアを開始して数年経ってもプログラミングをしないでください」。これは公正なアドバイスですか?[閉まっている]
私はPHPで約5年の経験があり、Java、C#で多少経験が少なく、最近はPythonを学ぼうとしています。プログラマーとしてのキャリアを始めてから、仲間のプログラマーから、プログラミングはキャリアの初期の数年に適していると言われています(ほとんどの人は5年と考えています)。それ。彼らが提示する理由には、プログラミングに関連する頭痛とプレッシャーが含まれます。彼らはまた、プログラマーはあまり社会的ではなく、通常は家族などに時間を与えることを好まないと言います。特に「ああ、来て、あなたは一生プログラミングをすることはできません!」 ここで少し混乱しているので、他の人に質問する必要があります。プログラミングを辞めたらどうすればいいですか?!この場合、教えることは良い選択肢かもしれませんが、おそらく最初に博士号を取得する必要があります。また、私の国(パキスタン)でプログラマーの生活があまり良くないことも注目に値するかもしれません。通常、緊急のプログラミングタスクを達成するためにオフィスで2〜3時間余分に時間を費やさなければなりません。他の国や地域でも状況はいくぶん似ていると感じています。 この分野で5年間過ごした後、キャリアをプログラミングから何か他のものに変えることは公正なアドバイスだと思いますか? 更新 なんてこった...この分野で40年以上の経験を積むことができるとは知らなかった。私は1971年以来人々がそれをやっているのを見て興奮しています。それは私の誕生の15年前を意味します!このような経験豊富な人々と話すことができてうれしいです。ここパキスタンではそんなチャンスはありません。 すべての助けと共有をありがとう。これについてあなたの考えを得るのは素晴らしい経験でした。

6
サービスレイヤーとDAO —なぜ両方ですか?
私はSpringMVC、Hibernate、およびJava Webアプリケーションの例でいくつかのデータベースを使用しています。 これを行ういくつかの異なる方法がありますが、このSpring 3とhibernateの統合チュートリアルの例には、モデルクラス、ビュー(jsp内)、およびコントローラーのサービスクラスとdaoクラスがあります。 私の質問は、サービスとDAOクラスの両方が同じことをしないのですか?なぜ両方が必要なのですか? これは私が実際に使用していたチュートリアルです:http : //fruzenshtein.com/spring-mvc-security-mysql-hibernate/

3
Java 8 java.timeクラスにgetMillis()メソッドがないのはなぜですか?
Java 8には、パッケージjava.timeに日付と時刻のまったく新しいライブラリがあります。これは、以前にJodaTimeを使用したり、独自の日付処理ヘルパーメソッドを作成したりする必要があるユーザーにとって非常に歓迎されるものです。このパッケージの多くのクラスはタイムスタンプを表し、タイムスタンプgetHour()から時間getMinute()を取得する、タイムスタンプから分を取得する、タイムスタンプからナノを取得するなどのヘルパーメソッドを持っていgetNano()ます... getMillis()タイムスタンプのミリ秒を取得するために呼び出されるメソッドがないことに気付きました。代わりに、methodを呼び出す必要がありますget(ChronoField.MILLI_OF_SECOND)。私には、図書館の矛盾のように思えます。そのようなメソッドが欠落している理由を誰かが知っていますか、またはJava 8がまだ開発中であるため、後で追加される可能性がありますか? https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html ここで定義されているクラスは、インスタント、期間、日付、時刻、タイムゾーン、期間など、主要な日時の概念を表しています。これらはISOカレンダーシステムに基づいています。これは、予言的なグレゴリオ暦のルールに基づいた事実上の世界カレンダーです。すべてのクラスは不変であり、スレッドセーフです。 各日時インスタンスは、APIによって便利に利用できるようになっているフィールドで構成されています。フィールドへの低レベルのアクセスについては、java.time.temporalパッケージを参照してください。各クラスには、あらゆる種類の日付と時刻の印刷と解析のサポートが含まれています。java.time.formatカスタマイズオプションについては、パッケージを参照してください... この種類のクラスの例:https : //docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html 2007-12-03T10:15:30など、ISO-8601カレンダーシステムのタイムゾーンのない日時。 LocalDateTimeは、日時を表す不変の日時オブジェクトであり、多くの場合、年月日日時分秒として表示されます。年間通算日、曜日、通年など、他の日付および時刻フィールドにもアクセスできます。時間はナノ秒の精度で表されます。たとえば、「2007年10月2日13:45.30.123456789」という値は、LocalDateTime...
64 java  java8 

4
JSFを使用しない理由[非公開]
StackExchangeは初めてですが、あなたが私を助けることができると思いました。 レガシーJSPソリューションを置き換える新しいJava Enterpriseアプリケーションを作成しています。多くの変更により、UIとビジネスロジックの一部は完全に再考され、再実装されます。 Java EEの標準であるJSFが最初に考えられました。最初は良い印象がありました。しかし今、私は機能的なプロトタイプを実装しようとしていますが、それを使用することに関して本当に深刻な懸念があります。 まず第一に、それは私が今まで見た中で最悪で最も雑然とした無効な擬似HTML / CSS / JSミックスを作成します。ウェブ開発で学んだすべてのルールに違反しています。さらに、レイアウト、デザイン、ロジック、サーバーとの通信など、決して緊密に結合されるべきではないものが一緒に投げられます。CSSでスタイリングしたり、UIキャンディー(構成可能なホットキー、ドラッグアンドドロップウィジェットなど)を追加したりなど、この出力を快適に拡張する方法がわかりません。 第二に、それはあまりにも複雑です。その複雑さは際立っています。あなたが私に尋ねると、それは基本的なウェブ技術の貧弱な抽象化であり、最終的には不自由で役に立たない。私にはどんな利点がありますか?考えてみれば、なし。何百ものコンポーネント?さらに、数万のHTML / CSSスニペット、数万のJavaScriptスニペット、および数千のjQueryプラグインが表示されます。これは本当に多くの問題を解決します-JSFを使用しない場合はありません。または、フロントコントローラーパターン。 そして最後に、2年後にはやり直さなければならないと思います。最初のGUIモックアップをすべて実装する方法がわかりません(さらに、チームにはJSFエキスパートがいません)。どういうわけか一緒にハッキングできたかもしれません。そして、さらにあります。ハックをハッキングできると確信しています。しかし、いつかは行き詰まってしまいます。サービス層より上のすべてのものがJSFを制御しています。そして、最初からやり直す必要があります。 私の提案は、JAX-RSを使用してREST APIを実装することです。次に、クライアント側のMVCでHTML5 / Javascriptクライアントを作成します。(またはMVCのフレーバー..)ところで。部分的なAndroidフロントエンドも開発しているため、とにかくREST APIが必要になります。 私は、JSFが今日の最良のソリューションであることを疑っています。インターネットが進化しているので、なぜこの「レーキ」を使用する必要があるのか​​わかりません。 さて、賛否両論とは何ですか?JSFを使用しないという点を強調するにはどうすればよいですか?私の提案よりもJSFを使用する長所は何ですか?

4
マルチスレッドで関数型プログラミングは速くなりますか?物事の書き方が違うのか、物事のコンパイルが違うのですか?
私は関数型プログラミングの世界に飛び込んでいますが、関数型言語がマルチスレッド/マルチコアプログラムに適していることはどこでも読み続けています。再帰、乱数など、関数型言語がさまざまなことをどのように行うかを理解していますが、関数型言語でマルチスレッドが高速であるかどうかは、コンパイルが異なるため、または私がそれを書くためにわかりません。 たとえば、特定のプロトコルを実装するプログラムをJavaで作成しました。このプロトコルでは、2者は互いに何千ものメッセージを送受信し、それらのメッセージを暗号化し、何度も再送信(および受信)します。予想どおり、数千単位の規模を扱う場合、マルチスレッドが重要です。このプログラムには、ロックは含まれていません。 JVMを使用するScalaで同じプログラムを作成すると、この実装は高速になりますか?はいの場合、なぜですか?文章のスタイルが原因ですか?Javaがラムダ式を含むようになったため、書き込みスタイルが原因である場合、ラムダを使用したJavaを使用して同じ結果を達成できませんでしたか?または、Scalaが異なる方法でコンパイルするため、高速ですか?



11
プログラムを複数のクラスに分割するのが良いのはなぜですか?[閉まっている]
私はまだ高校生(10年生)で、学校で実際のコンピューターコースをまだ受講していません。これまでにやったことはすべて本を通してです。これらの本は、継承などの概念を教えてくれましたが、プログラムを複数のクラスに分割するとどのように役立ちますか?本は私に決して言わなかった。 主に最近のプロジェクトのためにこれを求めています。これはアーケードビデオゲームで、一部の人が言っているようにFlashゲームのようなものです(Flashゲームとは何なのかはわかりませんが)。事は、それはただ一つのクラスです。1つのクラスで完全に正常に動作します(ただし、時折ラグが発生します)。だから、私はそれを複数のクラスに分割することがどのように役立つかを尋ねています。 このプロジェクトはJavaで行われ、記録のために私がプロジェクトに取り組んでいるのは私だけです。

7
テスト容易性を設計する際に静的ユーティリティクラスを処理する方法
TDDを使用して開発されたほとんどの部分で、テスト可能なシステムを設計しようとしています。現在、次の問題を解決しようとしています。 さまざまな場所で、ImageIOやURLEncoder(標準Java APIの両方)などの静的ヘルパーメソッド、および大部分が静的メソッド(Apache Commonsライブラリなど)で構成されるその他のさまざまなライブラリを使用する必要があります。しかし、このような静的ヘルパークラスを使用するメソッドをテストすることは非常に困難です。 この問題を解決するためのアイデアがいくつかあります。 静的クラス(PowerMockなど)をモックできるモックフレームワークを使用します。これは最も簡単な解決策かもしれませんが、どういうわけかあきらめたように感じます。 これらのすべての静的ユーティリティの周りにインスタンス化可能なラッパークラスを作成して、それらを使用するクラスに注入できるようにします。これは比較的クリーンなソリューションのように聞こえますが、これらのラッパークラスを大量に作成することになると思います。 これらの静的ヘルパークラスへのすべての呼び出しをオーバーライド可能な関数に抽出し、実際にテストするクラスのサブクラスをテストします。 しかし、TDDを行う際に多くの人が直面しなければならない問題であるに違いないと私は考え続けます。したがって、この問題の解決策はすでに存在しているはずです。 これらの静的ヘルパーを使用するクラスをテスト可能に保つための最良の戦略は何ですか?

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