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

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

7
「データ隠蔽」と「カプセル化」の違いは何ですか?
「実際のJava同時実行性」を読んでいます。「幸いなことに、カプセル化やデータ隠蔽など、よく組織化された保守可能なクラスを作成するのに役立つオブジェクト指向の手法は、スレッドセーフの作成にも役立ちますクラス。" 問題#1-データの隠蔽について聞いたことがなく、それが何であるかわかりません。 問題#2-カプセル化はプライベート対パブリックを使用しており、実際にはデータが隠れていると常に考えていました。 データ隠蔽とは何か、カプセル化とどのように異なるのか説明していただけますか?

5
Java / C#でRAIIを実装できないのはなぜですか?
質問:Java / C#でRAIIを実装できないのはなぜですか? 明確化:ガベージコレクターは決定論的ではないことを認識しています。そのため、現在の言語機能では、オブジェクトのDispose()メソッドをスコープの終了時に自動的に呼び出すことはできません。しかし、そのような決定論的な機能を追加できますか? 私の理解: RAIIの実装は、次の2つの要件を満たす必要があると感じてい ます。1.リソースの有効期間はスコープにバインドされている必要があります。 2.暗黙的。リソースの解放は、プログラマーによる明示的なステートメントなしで行われる必要があります。明示的なステートメントなしでメモリを解放するガベージコレクターに似ています。「暗黙性」は、クラスの使用ポイントでのみ発生する必要があります。もちろん、クラスライブラリの作成者は、デストラクタまたはDispose()メソッドを明示的に実装する必要があります。 Java / C#はポイント1を満たします。C#では、IDisposableを実装するリソースを「using」スコープにバインドできます。 void test() { using(Resource r = new Resource()) { r.foo(); }//resource released on scope exit } これはポイント2を満たしません。プログラマは、オブジェクトを特別な「使用」スコープに明示的に結び付けなければなりません。プログラマーは、リソースをスコープに明示的に結び付けることを忘れる可能性があり(実際にそうします)、リークを作成します。 実際、「使用中」ブロックは、コンパイラーによってtry-finally-dispose()コードに変換されます。try-finally-dispose()パターンと同じ明示的な性質を持っています。暗黙のリリースがなければ、スコープへのフックは構文糖衣です。 void test() { //Programmer forgot (or was not aware of the need) to explicitly //bind Resource to a scope. Resource r …

6
特定の機能を関数に抽出する必要がありますか?
3つのタスクを実行する大きなメソッドがあり、それぞれを個別の関数に抽出できます。そのタスクごとに追加の関数を作成する場合、コードが良くなるか悪くなるか、そしてその理由は何ですか? 明らかに、メイン関数のコード行は少なくなりますが、追加の関数宣言があるので、クラスには追加のメソッドがありますが、クラスがより複雑になるため、これは良くないと思います。 すべてのコードを書く前にそれを行うべきですか、それともすべてが完了するまでそのままにしてから関数を抽出する必要がありますか?

9
Pure Java Webブラウザー、実用的ですか?[閉まっている]
Java Webブラウザが可能であることは知っていますが、実用的ですか?Loboプロジェクトを見て、感銘を受けたことを認めなければなりませんが、私が収集したことから、2009年に開発が停止したようです。 ChromeやFirefoxのランクに含まれるものですか、それとも本質的に速度が遅く、ユーザーを妨げますか?
29 java  web  browser 

6
Googleでのプログラミング言語の使用[終了]
GoogleはPython、Java、C ++を使用していると聞きました。しかし、私が知らないのは、これらのプログラミング言語のそれぞれがどのように使用されているかです。Googleで使用されているPython、Java、C ++は何ですか。1つの言語で十分なのに、なぜ最大3つのプログラミング言語を使用したのでしょうか。誰か知っていますか?

6
なぜリフレクションを使用する必要があるのですか?
私はJavaが初めてです。私の研究を通じて、クラスとメソッドを呼び出し、どのメソッドが実装されているかを知るためにリフレクションが使用されることを読みました。 いつリフレクションを使用する必要がありますか?リフレクションを使用してオブジェクトをインスタンス化し、従来の方法でメソッドを呼び出すことの違いは何ですか?
29 java  reflection 

9
演算子の前後の改行[終了]
SunのJavaコードの規則では、演算子の前に改行を配置することが提案されていますが、他の多くのガイドラインは改行に同意しません。明らかな長所と短所はないので、これらのスタイルの1つを別のスタイルよりも使用する利点はありますか? String longVarName = a + b + c + d + e + f; 対 String longVarName = a + b + c + d + e + f;

2
次の(アンチ)パターンの名前は何ですか?その長所と短所は何ですか?
過去数ヶ月間、私は次のテクニック/パターンで数回つまずきました。しかし、特定の名前を見つけることはできないようです。また、その長所と短所を100%確信しています。 パターンは次のとおりです。 Javaインターフェース内では、一般的なメソッドのセットが通常どおり定義されます。ただし、内部クラスを使用すると、デフォルトのインスタンスがインターフェースを介してリークされます。 public interface Vehicle { public void accelerate(); public void decelerate(); public static class Default { public static Vehicle getInstance() { return new Car(); // or use Spring to retrieve an instance } } } 私にとって、最大の利点は、開発者がインターフェイスについてのみ知る必要があり、実装についてではなく、インスタンスをすぐに作成したい場合などです。 Vehicle someVehicle = Vehicle.Default.getInstance(); someVehicle.accelerate(); さらに、構成に応じてインスタンスを動的に提供するために、Springと共にこの手法が使用されているのを見てきました。この点で、これもモジュール化に役立つようです。 それにもかかわらず、インターフェイスを実装の1つと結合するため、これがインターフェイスの誤用であるという感覚を揺るがすことはできません。(依存性反転の原理など。)誰もがこの技術がどのように呼ばれるか、そしてその長所と短所を私に説明してもらえますか? 更新: しばらく検討した後、次のシングルトンバージョンのパターンがはるかに頻繁に使用されていることを再確認しました。このバージョンでは、パブリックの静的インスタンスは、(フィールドが最終であるために)1回だけ初期化されるインターフェイスを介して公開されます。さらに、インスタンスはほとんどの場合、Springまたは実装からインターフェイスを分離する汎用ファクトリーを使用して取得されます。 public interface Vehicle …

3
ガベージコレクターを除き、Javaを非リアルタイムプログラミング言語にするもの
ガベージコレクタを除き、リアルタイムプログラミングに適さないJavaのその他の機能は何ですか?ネット上では、Java vs C ++がリアルタイムプログラミングに関して議論されるときはいつでも、言及されるのは常にガベージコレクターです。他に何かありますか?

4
Java 6からJava 7への移行を正当化する方法は?
Java 6からJava 7に移行していました。このプロジェクトは予定より遅れており、リスクが低下しています。その場合、引き続きJava 6を使用します。 マネージャーに戻って、JDK 7を使用することが重要であると確信できるJava 7の具体的な改善点は何ですか?(Java 6に関して)Oracle Java 7で強調できるバグ修正を探しています。私の場合、セキュリティ、パフォーマンス、Java 2D /印刷などの修正がより売れるでしょう。たとえば、コンパイラの修正はあまり役に立ちません。 [ Oracle導入ガイド、バグデータベース、Stack Overflow に関する質問など、多くのサイトを調べています]。 更新:答えてくれてありがとう。更新を次のリリースに再スケジュールしました。最も近いのはセキュリティです。最も投票数の多い回答を受け入れます。
28 java  migration 

3
Javaのブールプリミティブ型名が 'bool'ではないのはなぜですか?
Javaには int そして Integer boolean そして Boolean これは少し矛盾しているようです、なぜ boolvs Booleanプリミティブ型に確立された短い名前を使用するのですか? または integervs Integer型名の一貫性を保つために? 私が考えて C ++を使用することを決めたboolJavaが使用することに決めたよりもかなり早くboolean、そしておそらくまた、いくつかの(一度に非標準?)Cの拡張もそうするために歴史的な順位があっただろうbool。私はしばしばbool最初に本能的に使用しようとすることに気づきました(現代の編集者は余分なコンパイルラウンドなしですぐにこれを見つけます)。 誰かがそのストーリー(の一部)を覚えているか、ネットで関連する歴史的な議論を見つけてリンクすることさえできれば、それは素晴らしいことです。
28 java  history  boolean 

10
プログラマーは静的言語に慣れていて、Javascriptツールの欠如にどのように対処していますか
私はほとんどの場合、ほとんどの場合、コンパイルされた言語、特にJavaでのみプログラミングを行ってきました。Javaについての私のお気に入りの1つは、Eclipseのようなツールを使用するとき、どれだけ生産性が高く、実際にコードを書く必要があるかということです。 あなたはできる: メソッドとクラスを簡単かつ自動的にリファクタリングします メソッドが呼び出された場所、または定数が使用された場所をすべて即座に表示する(コール階層を開く/参照を表示) 静的型付けとは、コード補完を使用して、オブジェクトで使用可能なすべてのパラメーター/関数を表示できることを意味します Ctrlキーを押しながら関数/メンバー/クラス名をクリックして、その定義に直接移動します これらすべての機能は、IDEが私の親友であると感じさせます。Javaコードを記述し、特に他の人のプログラムを理解するのがはるかに簡単になります。 しかし、私はますますJavascriptの使用を求められており、これまでの私の経験は非常に否定的でした。 特に: 関数のエントリポイントをすぐに見つける方法はありません(プレーンテキスト検索では、呼び出し階層のさらに上のメソッドの検索が行われる可能性があります。 パラメーターは関数に渡され、そのパラメーターで使用可能なプロパティと関数を知る方法はありません(実際にプログラムを実行し、関数が呼び出されるポイントに移動し、console.logsを使用してすべてのプロパティを出力する以外利用可能) コールバックとしての匿名関数の一般的な使用法は、しばしば混乱するコードパスのスパゲッティにつながり、すぐに移動することはできません。 確かに、JSLintは実行前にいくつかのエラーをキャッチしますが、それでも、ブラウザーでコードの下に赤い波線を表示するほど便利ではありません。 結局のところ、プログラム全体を常に頭に置く必要があるということです。これにより、複雑なプログラムを作成するための認知的負荷が大幅に増加します。そして、心配するこれらすべての余分なものは、実際の創造性と問題解決のための私の脳内のスペースを少なくします。 確かに、正式なクラス定義全体を記述するよりも、オブジェクトを一緒にスローする方が高速です。しかし、プログラムはわずかに簡単かつ迅速に作成できますが、私の経験では、プログラムの読み取りとデバッグははるかに困難です。 私の質問は、他のプログラマーがこれらの問題にどのように対処するかということです。Javascriptは明らかに人気が高まっており、私が読んだブログは、これらの問題の解決策を必死に見つけようとするのではなく、人々の生産性に関するものです。 GWTを使用すると、代わりにJavaでJavascript環境のコードを記述できますが、私が期待するほど広く使用されているようには見えません。実際、人々は複雑なプログラムにはJavascriptを好むようです。 私は何が欠けていますか?

9
ScalaがCまたはC ++で実装されなかった理由
ScalaがCやC ++ではなくJavaと.NETで実装された理由を知っている人はいますか?ほとんどの言語はCor C ++で実装されています(つまり、Erlang、Python、PHP、Ruby、Perl)。Javaおよび.NETライブラリにアクセスできること以外に、Javaおよび.NETで実装されたScalaの利点は何ですか? 更新 Scalaは、Cで実装された場合、JVMに依存するよりもより適切に調整できるため、より多くの利益を得られませんか?
28 java  c++  .net  c  scala 

6
経験豊富な開発者としてJavaを学習するための標準的な本はありますか?[閉まっている]
私は、過去5/6年間、ギブオア・テイクをして、.NET開発者になりました。私はプロのJava開発を行ったことは一度もありませんし、最後に触れたのはおそらく大学に戻ったときでしょう。私はScala言語を少しいじっていましたが、深刻なことは何もありませんでした。最近、かなりクールな仕事をする機会を提供されましたが、.NETの代わりにJavaを使用しました。私は現在のスキルセットで申し分なく得ることができると思います。つまり、私はすでにプログラミングの方法をよく知っており、C#やC ++などの言語に精通していることを意味します。必要なのは、本当に良い参考書と、Javaでの考え方に関する本です。各言語/フレームワーク/スタックは特定の方法で対処しようとしますが、Javaも例外ではないと確信しています。 これなしでは生きていけない素晴らしいJavaの本は何ですか?Javaの最も重要な部分について書かれた本がありますが、それよりも先に理解する必要がありますか? 補足として、私は主にJava Web開発を行います。永続性、フレームワーク、サーバーなどに使用しているものの種類が100%ではありません。
28 java  books 

5
Javaパッケージ名の規則に欠陥はありますか?[閉まっている]
私たちは皆、ドメイン名を変えるJavaパッケージ名の慣習に精通しています。つまりwww.evilcorp.com、慣例により、Javaパッケージを使用することを選択しますcom.evilcorp.stuff。 ますます私はこれにうんざりしています。商用プログラマーとして、ソフトウェアのパッケージ名はブランドの変更、買収などのために完全に無関係であるということに何度も遭遇します。 オープンソースの世界では名前の変更が少ないので、理にかなっています。しかし、多くの(商用/内部)ソフトウェアの保存期間は、それらを作成する組織の保存期間よりもはるかに長いようです。 この問題は、ソフトウェアプロジェクトがマーケティング部門を率いて、特定のプロジェクトを指すdu duという名前を使用することで、さらに悪化することがよくあります。皇帝の新しい服に新鮮で新しい感じを与えるために、3か月後に必ず変更される名前。 このため、逆ドメインをパッケージ名として使用することをほとんどやめました。確かに、これが大規模に行われた場合、名前の衝突のリスクがありますが、「ユニークな」ソフトウェア名を使用するか、一般的な言葉を避けるか、ライブラリとして販売/リリースされるプロジェクトにリバースドメインを使用することで確実に軽減されます。 他の考え?
28 java  naming 

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