なぜ私は、Javaを使用する必要があります

あなたの業務ニーズに応じて、そこにJava言語よりも良いかもしれないが、私は離れての私ができる任意の言語を見ていません。

私は1997年以来のJavaを使用していた覚えている、としてJavaの1.1リリースされたばかりのすぐ後。それ以来、一般的に、私は、Javaプログラミングを使用したい、私は認めざるを得ないものの、これらの日は、私は頻繁にJavaで書かれた「深刻コード」書くのが好きなGroovyスクリプトを。

FORTRANPL / 1パスカル、最後にC言語の背景、私はJavaの好きなものをたくさん見つけました。Javaは私のあるオブジェクト指向プログラミングの最初の主要な体験。それまでは、私は約20年間、プログラミングされていると私は何が重要であり、いくつかのコメントをものではないと言うことができます。

デバッグは、主要言語機能です

私は本当に偶然、特にIBMのメインフレーム上のFORTRANプログラミングの時代に、エラーによって引き起こさぼかす配列で終わらない反復コードで追跡私の時間を無駄に嫌い。別の微妙な問題は、4バイトの整数の引数でこのサブルーチン、その時々の場合、サブルーチンを呼び出すことであり、2つのバイトを有することが期待され、通常は良性のエラーである小端アーキテクチャ上の、しかしでビッグエンディアンのマシンでは、最初の2バイトの値は常に、一般的にはゼロではありません。

そのバッチのデバッグ環境ではコアから、また、非常に不便であるか、print文をデバッグ挿入し、これらのステートメント自体は間違った場所に移動したりしても、それらが消えるようになります。

だから私は、最初に、パスカルの初期の経験を使用していMTS、その後にIBM OS / VS1 MTS上で同じコンパイラを使用して、私の人生を楽にします。パスカルの強い型付けと静的タイプはエラーイベントで検出することができるように、私は、配列の境界および範囲のプラグイン動作のためにすべてのパスカルコンパイラチェックを使用し、この勝利を得るための重要な部分です。場合は、単純なタスク、1980年代にUnixシステムへの私たちの初期の作品の中で最も移植パスカルコード。

文法の適切な量

しかし、私はパスカルが好きなもののために、私のコードは非常に長いですし、文法は、コードよりもさらにそうです;たとえば、使用します。

if ... then begin ... end else ... end
复制代码

むしろCまたは同様の言語より:

if (...) { ... } else { ... }
复制代码

また、Pascalで完了することが困難ないくつかのものは、C言語で簡単です 私はますますCを使い始めたときしかし、私は自分自身が、私はFORTRANで、例えば、配列の境界を超えて発生したエラーの同じタイプを経験しました。原点エラーでは配列の最後まで検出されていないが、唯一のプログラムの実施の後期悪影響までそれらを検出。幸い、私はもはやそのバッチ環境に住んでいない、との良好なデバッグツールを持っています。しかし、C私のために少しも柔軟。

私が会ったときのawk、私はCと比較して、それは仕方の別の種類であることがわかりました。その時、私の仕事の多くは、フィールドデータを変換し、レポートを作成することを伴います。私はによりことがわかったawkような他のUnixコマンドラインツールを、追加sortsedcutjoinpastecommというように、驚くべきことを行うことができます。本質的には、これらのツールは私にテキストベースのリレーショナル・データベース・マネージャーのような文書を与え、このような構造の列を持つテキストファイルには、我々はフィールドデータを大幅に節約方法です。それとも、ないこの形式ならば、ほとんどの時間は、列の型構造にリレーショナルデータベースまたはバイナリ形式のいくつかの種類からエクスポートすることができます。

awk文字列処理のサポート正規表現連想配列だけでなく、awk基本的な特徴は、(それが実際にデータ変換パイプラインである)、私のニーズに合いました。バイナリデータファイル、複雑なデータ構造とキーパフォーマンス要件に直面したとき、私はまだ戻ってCになります。しかし、私が使用してより多くのようawkに、私はより多くの受注をサポートするために、C文字列の非常に基盤を見つけましたイライラします。時間が経つにつれて、より頻繁に私はC、そしてが広く、時間の残りの部分で使用されている場合にのみ使用されますawk

適切な抽象化のJavaレベル

そして、Javaの。それはかなりよさそうだ- Cを彷彿とさせる、比較的単純な構文、またはこの類似Pascalや他の言語よりも良い、少なくとも初期のより明白です。それは、強く型付けされているので、プログラミングエラーの多くは、コンパイル時に捕捉されます。私が上だったので、オブジェクト指向を開始することができるようになりますが、これは良いことですが多くの知識を必要としていないようOOPデザインパターンおなじみなし。しかし、たとえほんの始まり、と私は単純化された好きな継承モデルのアイデアの後ろに。(Javaは、インターフェースがある程度リッチ例に、単一の継承を提供して使用することができました。)

機能の豊富なライブラリ(つまり、「自己バッテリー」のコンセプトである)と、適切なレベルで直接私のニーズを満たしているようです。最後に、私は自分自身がすぐにオブジェクトにまとめてデータと行動の組み合わせのアイデアを考えました。引数リストまたはグローバル変数に制御されていないアクセスの多くは、はるかに優れているよりも - これは、明示的にデータ間の相互作用を制御するための良い方法であると思われます。

それ以来、Javaは私のプログラミングツールボックスのヘルヴェティアサーベルとなっています。私はまだ時折におけるawkプログラムの作成、または(のようなLinuxのコマンドラインユーティリティを使用しcutsortまたはsed手で問題を解決するために、彼らは明らかに直接的な方法、)。私は過去20年間で、私はCコードの50行を書かれていることができなかったと思われる、Javaは完全に私のニーズを満たしています。

また、Javaは常に進化しています。まず、それがより効率的になってきています。そして、それはいくつかの非常に便利な機能は、例えば、追加のリソースをテストしようとすることができ、それは良いが、ファイルI / Oの間に長く、やや紛らわしいエラー処理コードをクリーンアップすることができ、またはラムダ、それは関数宣言を提供し、送信パラメータの容量と、古いアプローチは、クラスまたはインタフェースの作成を必要とするこれらの機能を「管理」、またはストリーム、行動機能反復をカプセル化した、チェーン関数呼び出しの形で実装効率的なデータ変換パイプラインを作成することができます。

Javaはどんどん良くなっ

多くの言語設計者は、基本的にJavaの経験を改善する方法を学びました。私にとっては、そのほとんどが私にあまりにも多くの関心を引き起こすことはありませんでした。もう一度、これは私の典型的なワークフロー、および(それ以上)のより反映するこれらの言語の機能がもたらす減少します。:しかし、私は進化のステップのプログラミングツール不可欠な一部となっているGroovyの私はシンプルなソリューションを必要とし、小さな問題が発生したときに、Groovyは私の最初の選択肢となっています。また、それは、Javaとの高い互換性です。私にとっては、GroovyのPythonは多くの人が提供する同じユーティリティを埋めるために-それは、DRY(自分を繰り返してはいけない)コンパクトで、(リストや辞書は、完全な言語サポートを持っている)表現力を持っています。私はまた、使用のGrails Groovyのは非常に高性能かつ有用なJavaのWebアプリケーションのための単純化されたWebフレームワークを提供しています使用しています、。

Javaはまだそれを開いていますか?

最近、OpenJDKのはさらにジャワの私の快適性を向上させるためにサポートして成長しています。さまざまな方法で多くの企業には、OpenJDKのをサポートするためAdoptOpenJDK、アマゾンHatおよびRed私のより大きく、より長期的なプロジェクトの一つで、私たちはAdoptOpenJDKを使用するいくつかのデスクトッププラットフォーム上のカスタムランタイム環境を生成します

Javaのよりも良い言語はありませんか?私はあなたの運用上のニーズに応じて、そこにあると確信しています。しかし、私はいつものJavaに非常に満足しています、私は私を失望させる可能性があるものに遭遇していません。


経由:opensource.com/article/19/...

著者:クリス・ハーマンセンのトピック:lujun9972の翻訳:WXY校正:WXY

この記事LCTTオリジナルのコンパイラは、Linuxの中国は誇りに思っています

おすすめ

転載: juejin.im/post/5d7d9bffe51d4561d54dea11