ホームページ  >  記事  >  バックエンド開発  >  Java 開発プロセスと .NET 開発プロセスのいくつかの違い

Java 開発プロセスと .NET 開発プロセスのいくつかの違い

巴扎黑
巴扎黑オリジナル
2016-12-19 16:55:101240ブラウズ

私は長い間 .NET プラットフォームで C# 言語を使用して開発してきましたが、最近、プロジェクトを JAVA で開発し始めました。この記事では、私自身の経験を通じて、具体的な開発プロセスの違いについて説明します。開発プロセスについては、経験と知識が限られているため、この記事では表面的な機能や一般的に使用されている機能との違いのみを説明します。

.NETプログラムの開発にはVS2008とVS2010を使用し、JAVAプログラムの開発にはMyEclipse8.5を使用しています。IDE、言語、プラグインの違いから簡単に説明します。

IDE の違い:

私の第一印象は、MyEclipse は開発プロセス中にコードを書いたり表示したりするのに非常に便利であるということです。VS にはない多くの機能も備えています。 :

1. 変数フィールドを選択すると、このフィールドで使用されている他のフィールドの背景色が自動的に強調表示され、この機能がどこで使用されているかが簡単にわかります。

2. 中括弧または括弧内のコード セグメントの場合、記号の後ろをダブルクリックすると、括弧内のコード セグメントが簡単に表示されます。

3. MyEclipse には、VS の #region や #endregion のようなコード セグメント領域がありません。MyEclipse が他のプラグインを使用しない限り、メソッドまたはクラスで #region 関数ポイント... #endregion を使用できます。 ins この効果を実現するには。

4. Ctrl+alt+t および Ctrl+alt+r ショートカット キーは、MyEclipse でそれぞれ非常に便利で、ファイルや特定のタイプをすばやく検索できます。ファイルをあいまい一致させましたが、VS はそのような関数を見つけませんでした。

5. MyEclipse スマート リマインダーは、デフォルトでは比較的シンプルです。Java のトリガーは .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ に設定されると、MyEclipse に任意の文字を入力することでプロンプトが表示されます。 VS とは異なり、小文字の a を入力すると、大文字の A で始まる変数タイプをインテリジェントに入力することもできます。

6. MyEclipse ではエンコードの問題が頻繁に発生しますが、これは初心者にとって非常に不便です。ファイルを開くときにファイルが文字化けする場合と、リクエストを送信するときに中国語のコンテンツが文字化けする場合の 2 つの状況に分けられます。ワークスペースに複数のプロジェクトが含まれている場合、1 つのプロジェクトが GBK でエンコードされ、もう 1 つが UTF-8 でエンコードされる可能性があり、これにより 1 つのファイルが文字化けする原因になります。[ウィンドウ]->[環境設定]->[全般]でプロジェクト全体のエンコードを設定します。 -> ワークスペースの [テキスト ファイル エンコーディング] で [その他] 設定を選択し、別のプロジェクトの場合は、 [プロパティ] -> [プロジェクトのリソース] を右クリックして、 [テキスト ファイル エンコーディング] で [その他] 設定を選択します。 JSP などの送信されたリクエスト コンテンツのデフォルトのエンコーディングは ISO-8859-1 であり、これにより文字化けが発生することがよくあります。ウィンドウの [環境設定] > [全般] > [コンテンツ タイプ] の [テキスト] でさまざまなファイルのエンコーディングを設定できます。ただし、VS にはコード化けの問題はそれほど多くなく、初心者がコード化けの問題に遭遇する傾向はありません。

7. MyEclipse では、メモリ オーバーフローやその他の関連するメモリの問題が頻繁に発生しますが、これも初心者にとっては混乱を招きます。これは、myeclipse.ini の -vmargs にある構成パラメータ (-Xmx912m など) が不十分であることが原因で発生します。最大割り当てヒープ メモリ 912M、-XX:MaxPermSize=556m は、最大割り当て非ヒープ メモリが 556M であることを意味し、これにより MyEclipse メモリが使用可能になります。ただし、一部のメモリ オーバーフローが発生する場合があります。JVM メモリ使用量がオーバーフローする可能性があります。[ウィンドウ] > [設定] > [Java] > [インストールされた JRE] で、デフォルトの JDK を選択し、[編集] を選択する必要があります。 、デフォルトでは VM 引数で関連するパラメータを設定するだけです。実行しているプログラムが WEB プログラムの場合は、[ウィンドウ] -> [設定] -> [MyEclipse] -> [サーバー] -> [Tomcat] で Tomcat のメモリ設定を設定し、対応する Tomcat のバージョンを選択する必要がある場合があります。次に、内部の JDK ノードを選択し、「オプションの Java VM 引数」でメモリー・パラメーターを設定します。比較的、VS にはそのような面倒な処理はなく、一般的にメモリパラメータを設定する必要はありません。

8. コードをデバッグする場合、VS は MyEclipse よりも強力で、ブレークポイントで既存の変数の値を変更できますが、コードを作成するときに、VS が変数を監視するときに自動的にプロンプ​​トを表示することもできます。 MyEclipse は自動的に通知することができず、VS は既に実行中のコードにブレークポイントをドラッグできます。この機能は問題をデバッグするときに非常に強力で便利ですが、MyEclipse はブレークポイントをドラッグできません。

9. デフォルトの Ctrl + 左クリックは、フィールドまたは型の定義をすばやく見つけることができます。これは F3 と同じですが、開発プロセスでは Ctrl + 左クリックの方が便利だと思います。 VS でのデフォルトの F12 のクイック位置決めは便利で、Spring と統合された後は、Ctrl キーを押しながら左クリックして、挿入されたインターフェイスのサブ実装コードを選択できるため、実装コードを簡単に表示できます。 Spring.net統合を使用する場合にこの機能を提供します。

10. MyEclipse でソースを右クリックすると、ゲッター、セッターの生成、インターフェイスの親クラスのメソッドの継承など、多くの便利な機能を使用できます。

11. JAVA プロジェクトは、VS のように .sln または .csproj ファイルをダブルクリックして開くことはできません。ただし、一度 MyEclipse を開いた後は、次回 MyEclipse を開いたときに、開いているプロジェクトが自動的にロードされます。 VS は一度に 1 つのソリューションしか開くことができず、ソリューションにはさまざまなプロジェクトが含まれます。新しいソリューションを追加した場合は、次回からは個別に開く必要があります。

12. MyEclipse は新しいプロジェクトをインポートします。JRE バージョンが異なる場合は、プロジェクトを右クリックし、[ビルド パス] > [ライブラリ] を選択する必要があります。 ; Java ビルド パスを使用して JRE バージョンを変更します。ただし、コンパイル用の JDK バージョンが選択されていないことが原因で、コンパイルに問題が発生することがあります。コンパイラの準拠レベルを変更します。 VS の場合、上位バージョン コードの下位バージョン コードを開いて自動的にアップグレードされる方が便利です。または、どのバージョンの .NET でコンパイルするかを手動で選択することもできます。

13. MyEclipse では、コード編集ボックスのファイルのタブバーをダブルクリックして、コード編集ブロックの全画面表示とマルチフレーム表示を切り替えることができます。これは、Link Vith Editor があります。 [パッケージ エクスプローラー] ボックスの横にあるボタンを使用すると、パッケージ内のファイルの場所をすばやく見つけることができ、より便利になりますが、VS では、ファイルを右クリックした後に、対応する物理ファイル ディレクトリを開くことを直接選択できます。 MyEclipse には存在しません。

言語の違い:

Java 言語と C# 言語は非常に似ており、内部的には多くの違いがあり、提供される API も異なりますが、特定の関数ポイントを開発するためのアイデアは共通して使用されます。開発プロセス中に比較的新しいテクノロジや機能にあまり触れたことがありません。次のような違いがあります。

1. Java パッケージの名前は、C# の物理ファイルの場所に 1 対 1 で対応します。 、名前空間は自由に記述することができ、コンパイルされたアセンブリは自由に変更でき、アセンブリは JAVA で個別に型付けされた jar パッケージと同じ意味を持ちます。

2. JAVA ファイルにはパブリック クラスを 1 つだけ含めることができますが、C# では 1 つのファイルに複数のパブリック クラスを含めることができます。

3. JAR パッケージが見つかった場合、Java は新しい jar パッケージのメソッド フィールドの説明をチェックします。そうでない場合、インターフェイス呼び出しパラメーターの説明を確認するには、その jar パッケージに対応する別の doc ドキュメントが必要です。 , しかし、ソースコードがあれば、生成されたjarパッケージのソースコードはデバッグ中に簡単に見ることができます。 .NET に DLL ファイルがあれば、パラメータを呼び出すメソッドのメタデータを簡単に確認できますが、パラメータの詳細な説明を確認するには、DLL に対応する XML ドキュメントが必要です。

4. WEB 開発では、JAVA のフィルター、サーブレット、およびリスナーが非常によく使用されます。Java のフィルターは、.NET のモジュールを使用して一部の機能を実装できますが、フィルターはリクエストのスコープを設定でき、モジュールはグローバルです。サーブレットは、カスタマイズされたリクエストを処理できる特定のハンドラーに相当します。リスナーは、.NET の Application_Start を使用して一部の機能を実行できますが、JAVA には、WEB アプリケーションの開始時に実行を開始するいくつかのデフォルトのリスナーが統合されています。具体的な実行プロセスは次のとおりです。WEB の開始時、リスナーの ContextInitialized メソッド -> すべてのフィルターの初期化 (filter-mapping の値に関係なく) -> 起動時のロードを大きく設定したすべてのサーブレットの初期化メソッド0 以上 (servlet-mapping の値に関係なく)、特定のリクエストは次のとおりです: 特定の Servlet の init (1 回だけ実行) ->Filter doFilter (設定された filter-mapping の値の要求) ->サーブレット サービス。Web サイトのリリースの最終的な実行順序は、フィルター破棄 - 》リスナー contextDestroyed です。

5. Java の Final キーワードは、フィールドに指定すると、フィールドを変更できず、コンストラクターでも変更できないことを意味しますが、const はデフォルトで静的です。これは C# の readonly に似ていますが、readonly はコンストラクター内で変更できます。メソッドの修飾子として使用される場合、C# のシールされたクラスと同様であり、オーバーライドできません。

6. Java には静的コンストラクターがありません。初期化作業を実装したい場合は、静的コード ブロック static{...} を使用する必要があり、C# には静的コンストラクターのみが含まれます。 。

7. Javaには定数プールという概念があり、ヒープやスタックとは別の領域になりますが、StringにはC#と同様の文字列保持機構がありますが、.NETとは異なります。したがって、Java での文字列比較にはイコールを使用するのが最善です。そうしないと問題が発生する可能性があります。たとえば、「a」+「b」という文字列は定数プール内にあり、「ab」と比較すると等しくなりますが、「a」+「b」は変数であるため、 == を使用した場合、「ab」の判定は false を返します。そのため、JAVA で文字列を判定する場合は、equals を使用してください。ただし、この問題は .NET では関係ありません。計算された文字列は == と等しい結果になります。

8. Java では、すべてのファイルに Main メソッドのエントリがある限り、それを実行できます。ただし、.NET では、プロジェクトの種類をコンソール アプリケーションに変更する必要があり、その後、提供される Main メソッドが存在します。ランニングキャリアとして。

9. Java では -128 から 127 までの数値範囲が異なりますが、.NET では通常、交換および処理が必要なデータは 16 進数に変換されます。このようにして、8 ビットの最後の 2 ビットが取得され、同期暗号化、復号化、または関連する処理が容易になります

10。 .NET では、フィールド get と set を使用して取得できます。その後、構文シュガーを使用して、コンパイラが自動的に同等の get を生成します。内部フィールドを設定します。

11. JAVA は保存後にデフォルトでファイルを自動的にコンパイルしますが、これは各 Java ファイルをクラス ファイルにコンパイルするためでもあります。プロジェクトごとに 1 つの dll ファイルを保存し、コンパイルを実行すると、作業負荷が大きすぎて開発速度に影響します。

12. List は Java のインターフェイスです。C# で List コレクションを使用することに慣れている人にとって、新しい List はすでにエラーを報告しており、C# のジェネリックスは CLR 層と JAVA の汎用サポートとは異なります。ジェネリックは JVM でサポートされていないため、パフォーマンスはあまり向上しません。

13. JAVA のデフォルトの修飾子は、パッケージ内で表示されます (プロジェクトの大きな jar パッケージの下ではなく、同じフォルダー ディレクトリに対応します)。 arevisible それ自体とサブクラスにのみ表示されます。 .NET のクラスのデフォルトの修飾子は Internal であり、アセンブリ内でアクセスできます。メソッドとフィールドはデフォルトではプライベートであり、デフォルトの JAVA パッケージで表示されるのとは異なります。

http://lawson.cnblogs.com/

プラグインの違い:

1. MyEclipse 自体は多数のオープンソース フレームワークを統合するプラグインですが、VS は Microsoft の統合 IDE です。他のオープン ソース プラグインを使用する必要がある場合は、個別にダウンロードして設定する必要があります。

2. Java で Web サービスを実装する方法は数多くあります。JAX-WS (javax.jws パッケージのみ) に加えて、Java Web サービス仕様には独自のバージョンが付属しており、Web サービスのオープン ソース実装もあります。 axis と xfire は、axis1、axis2 を含み、xfire は cxf に名前が変更されていますが、.NET で公開されている Web サービスを相互に呼び出す場合、一般的にいくつかの問題が発生します。 wsdl の形式要件が厳しくなります。

上記は、私が開発プロセス中に遭遇した問題を最近分析してまとめた結果であり、範囲は限られており、今後も関連する技術的な点を改善し続ける必要があります。理解が完全に正確ではない可能性がありますので、問題がある場合は修正してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。