Я только начинаю свое путешествие по Java (я уже баловался с C ++), но я действительно запутался во всех различных версиях Java:
- JavaSE
- JavaEE
- JavaFX
- и т.п.
Может кто-нибудь объяснить это подробно?
Правильная 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, пока неясно.