これらの異なるJavaバージョンは何のためにありますか?


63

私はちょうどJavaのを始めようとしています(私はすでにC ++に手を出しています)が、Javaのすべての異なるバージョンについて本当に混乱しています。

  • JavaSE
  • JavaEE
  • JavaFX

誰かがこれらを詳細に説明できますか?

回答:


107

Java固有

Java Standard Editionは、一般的なコンピューティング用に設計された「通常の」バージョンです。Javaの他のすべてのバリアントと同様に、完全に自動化されたガベージコレクションを備えた仮想マシン上で実行される、強く静的に型付けされたバイトコードコンパイルされたオブジェクト指向言語です。言語のほとんどの機能を備えています。アプリケーションの例は、MinecraftやArgoUMLなどのアプリケーションです。スタンドアロンのデスクトップアプリケーションとして、またはアプレットとしてWebページに埋め込まれたアプリケーションとして実行できます。

Java Enterprise Editionは別の言語ではありませんが、Application Server実装内で実行されるソフトウェアを生成するために設計されたインターフェース仕様です。ここでの主な違いは、Enterprise Edition Interface仕様に準拠するアプリケーションサーバーへの展開用に設計されていることです。Java SEはスタンドアロンサーバーの記述に使用できますが、Java EEのように構築された標準化されたインターフェイスと仕様の目的は含まれていません。例としては、Glassfish(Java EEリファレンス実装)、JBossなどで実行するように設計されたアプリケーションがあります。

Java Micro Editionは、モバイルデバイスで実行するように設計されたJavaです。これはAndroidと同じではないことに注意してください。Java MEは、Java SEよりもモバイルハードウェアをうまく​​処理できるように設計されています。Pantec Easeを携帯電話として使用し、Java MEを実行しています。

Java Cardは、スマートATMカードのような本当に低価格のデバイスを対象とした「より小さな」ものです。はい、それらのいくつかは実際にそれらにJavaがあります。

JavaFXは、リッチインターネットクライアントGUIアプリケーションを構築するために設計されたフレームワークです。

JVM言語ファミリー

まず、JVM。これは、コンパイルされたbytcodeを実行するスタックベースの仮想マシンで、アセンブリ言語によく似ています。最適化により、非常に特殊な状況で非常に高速に実行できます。

これが実際のOracle Java Stuff、これで人々がJVMで一般的に使用するものになりました。これらの言語はすべてJava相互運用機能を備えており、通常、ほとんどまたはすべてのJavaライブラリを呼び出すことができます。

Groovyは、オブジェクト指向で動的に型付けされた言語であり、より簡潔な構文があり、Javaに代わるより簡単で強力な代替手段として請求されます。Javaの一種の拡張言語として設計されており、JavaファイルをGroovyプログラムにほぼドラッグアンドドロップできます。Grailsとして知られるWeb開発用に一般的に関連付けられているフレームワークがあります。

Scalaは非常にスケーラブルになるように設計された、かなり新しい(2003年)オブジェクト指向/機能のハイブリッド言語です。TwitterはScalaのヘビーユーザーです。

Clojureは、最近(2007年)Lispファミリーの関数型言語です。最初から大量の並行プログラミング用に設計されています。このソフトウェアの良い例はありませんが、それを使用している会社がたくさんあります。

JythonJRubyは、それぞれPythonRubyの Javaバイトコードバージョンです。

Jaskell(JVMのHaskell)のようなJVMには他にも多くの言語がありますが、それらは曖昧でアカデミックな実験になる傾向があります。

関連するもの

AndroidはJavaを使用しますが、Dalvikレジスタベースのマシンで実行されます。Dalvikは現在、その採用者であるGoogleに対する訴訟の対象となっています。Androidは基本的に、異なるライブラリセットを持つJava SEです。

NetbeansEclipseは、主にJava IDEについて広く話題になっている2つです。一方と他方について質問すると、クロージャが呼び出されますが、プログラミングの概念を意味するものではありません。

無関係なもの

JavascriptはJavaではありません...まったく。Javaの人気を利用するために名前が付けられ、それ以来、混乱は迷惑なものになりました。

部屋のサイ

Rhinoは、JavascriptコードをJavaコードに変換して、どこかで実行できるJavascriptインタープリターです。これは「本質的に」独立した言語ではありませんが、他の言語と同様に独自の癖があります。Rhinoは、CベースのSpiderMonkeyインタープリターの代替としてMozillaによって開発されました。Rhinoは通常、Javaプログラム内にJavascriptを埋め込むために使用されます。

OracleがJDK 8用に(おそらくドイツ語レベルの効率で)開発したNashornは、Java内の組み込みJavascriptの新しい標準のようです。これは、RhinoがJavaの主要な実装に使用されなくなったことを意味します。Rhinoプロジェクトにとってこれが何を意味するかは、現時点では不明です。


1
どうもありがとう!それが私が探していたものです:)もう1つの質問:J2SE、J2EEなど、これらはSE、EEなどの新しいバージョンですか?
パトリク

8
はい、J2EEとJ2SEは、Java Enterprise Editionのバージョン2と、それぞれ標準版です。しかし、この命名スキームはもう守られていません。現在のバージョンは、Java SE 6(または5/7)およびJava EE 5(または6)と呼ばれます。
BenR

1
スマートカード用のJavaはありますか?心が揺れます。
ミーガンウォーカー

1
それらすべてを支配する一つの答え!
ユーザー

1
JDK8以降、Rhinoは非推奨になりました(削除されましたか?)。Nashornは新しいRhinoです。
シルビウブルシア14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.