Для чего эти разные версии Java?

63

Я только начинаю свое путешествие по Java (я уже баловался с C ++), но я действительно запутался во всех различных версиях Java:

  • JavaSE
  • JavaEE
  • JavaFX
  • и т.п.

Может кто-нибудь объяснить это подробно?

Patryk
источник

Ответы:

107

Правильная Java

Java Standard Edition - это «нормальная» версия, предназначенная для общих вычислений. Как и все другие варианты Java, это объектно-ориентированный язык со строгой статической типизацией, скомпилированный по байт-коду, работающий на виртуальной машине с полностью автоматической сборкой мусора. У этого есть большинство особенностей языка. Примерами приложений могут быть такие приложения, как Minecraft или ArgoUML. Его можно запускать как отдельное настольное приложение или встроенное приложение на веб-странице в виде апплета.

Java Enterprise Edition - это не другой язык, а спецификации интерфейса, предназначенные для создания программного обеспечения, работающего внутри реализации Application Server. Основное отличие состоит в том, что он предназначен для развертывания на серверах приложений, которые соответствуют спецификациям интерфейса Enterprise Edition; 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 - это фреймворк, предназначенный для создания приложений с богатым пользовательским интерфейсом.

Языковая семья

Во-первых, JVM . Это основанная на стеке виртуальная машина, на которой выполняется скомпилированный байт-код, который очень похож на язык ассемблера. Оптимизация может заставить ее работать довольно быстро для очень специализированных ситуаций.

Вот и все для настоящего Oracle Java Stuff, а теперь для того, что люди обычно используют в JVM. Все эти языки поддерживают Java-взаимодействия и обычно могут вызывать большинство или все библиотеки Java.

Groovy - это объектно-ориентированный динамически типизированный язык с более лаконичным синтаксисом, который позиционируется как более простая и мощная альтернатива Java. Он был разработан как своего рода язык расширения для Java, позволяя практически перетаскивать файлы Java в программы Groovy. Он имеет структуру, обычно ассоциируемую с ним для веб-разработки, известную как Grails .

Scala - это сравнительно недавно (2003) гибридный объектно-ориентированный / функциональный язык, который разработан для высокой масштабируемости, отсюда и название. Твиттер является активным пользователем Scala.

Clojure - это недавний (2007) функциональный язык семейства Lisp. Он с самого начала предназначен для тяжелого параллельного программирования. У меня нет хорошего примера программного обеспечения для этого, но есть много компаний, использующих его.

Jython и JRuby являются версиями Java для байт-кода Python и Ruby соответственно.

Есть несколько других языков для JVM, таких как Jaskell (Haskell для JVM), но они, как правило, являются неясными / академическими экспериментами.

Связанные вещи

Android использует Java, но работает на машине, основанной на регистрах Dalvik. В настоящее время Dalvik является объектом судебного процесса против Google, его усыновителя. По сути, Android - это Java SE с другим набором библиотек.

Netbeans и Eclipse - две наиболее широко обсуждаемые среды разработки Java. Задавание вопросов о одном против другого вызовет закрытие, и я не имею в виду концепцию программирования.

Несвязанный материал

Javascript это не Java ... вообще. Он был назван так, чтобы воспользоваться популярностью Java, и с тех пор путаница раздражает.

Носорог в комнате

Rhino - это интерпретатор Javascript, который превращает код Javascript в код Java, который затем можно запустить где-нибудь. Это не отдельный язык "per se", но, как и все остальное, имеет свои особенности. Rhino разработан Mozilla как альтернатива их интерпретатору SpiderMonkey на C Rhino обычно используется для встраивания Javascript в программу Java.

Nashorn , разработанный Oracle (возможно, с немецким уровнем эффективности) для JDK 8, кажется новым стандартом для встроенного Javascript в Java. Это будет означать, что Rhino больше не используется для основной реализации Java. Что это значит для проекта Rhino, пока неясно.

Мировой инженер
источник
1
Большое спасибо! Это то, что я искал :) Еще один вопрос: J2SE, J2EE и т. Д. Это просто новые версии SE, EE и т. Д.?
Патрик
8
Да, J2EE и J2SE - это две версии Java Enterprise Edition соответственно стандартной версии. Эта схема именования больше не соблюдается. Текущие версии упоминаются как Java SE 6 (или 5/7) и Java EE 5 (или 6).
BenR
1
Есть ли Java для смарт-карт? Разум поражает.
Меган Уокер
1
Один ответ, чтобы править ими всеми!
пользователь
1
Начиная с JDK8, Rhino устарела (удалена?). Нашорн это новый носорог.
Сильвиу Бурча