Java platform что это
Платформа Java — виртуальная машина Java, как и зачем она используется
Java переводится как «кофе». Почему же так назвали серьёзный язык программирования? Да просто потому что программисты-разработчики очень любили кофе!
Целью разработчиков было создать инструмент позволяющий писать код, который будет полностью переносимым (кроссплатформенным) и в то же время эффективным, стабильным и будет быстро выполняться.
Java Virtual Machine или JVM — это программа, являющаяся прослойкой между операционной системой и Java программой.
В среде виртуальной машины выполняются коды Java программ. Реализованы версии JVM для всех существующих операционных систем.
Другие достижения разработчиков
- Разработчики достигли значительного сокращения времени на создание сложных программ, благодаря читаемому и понятному коду, синтаксис которого похож на C/C++.
- Предотвращение несанкционированного выполнения вредоносного кода за счёт системы безопасности.
- Добились элегантного решения таких сложных задач как многопоточность, сетевое взаимодействие, создание распределённых приложений, работа с потоками данных, предотвращение утечки памяти, перехватывание и обработка ошибок и исключений.
- Была разработана технология апплетов — динамически загружаемых программ, которые работают в среде веб браузера и позволяют вносить интерактивность в веб страницы.
- Разработана технология WEB-start, предоставляющая возможность запускать программу онлайн, кликом по ссылке на веб странице. При этом программа загружается, кэшируется и запускается, не требуется процесс установки и обновления подобного программного обеспечения, также достигается кроссплатформенность.
- И, наконец, была разработана платформа JavaFX, она основана на Java и используется для быстрого создания замечательных приложений с современным пользовательским интерфейсом. Эта технология также используется для запуска и разработки RIA — Rich Internet Applications, для создания программного обеспечения по работе с мультимедиа и для программирования на языке JavaFX Script.
Разделение платформы на три составляющие
- Java Standard Edition (Java SE) — кроме JVM, предоставляет набор библиотек для создания десктоп приложений, как консольных, так и оконных с продвинутым пользовательским интерфейсом.
- Java Enterprise Edition (Java EE) — надстройка над Java SE, предоставляет набор библиотек для создания web приложений, от обычных сайтов, до сложнейших корпоративных веб приложений.
- Java Micro Edition (Java ME) — вариант виртуальной машины, оптимизированной для работы на портативных устройствах — карманных компьютерах и мобильных телефонах.
В настоящее время платформа Java EE является лучшей основой для создания корпоративных (enterprise) приложений.
Что предлагает нам установка Java платформы
- Java Runtime — среда выполнения, обеспечивается виртуальной машиной.
- Инструменты для разработки — компилятор, отладчик, инструмент для создания документации.
- API — Application Programming Interface, обширный набор готовых библиотек для решения типичных и нетипичных задач.
Как работают Java программы
- Программист создаёт файл с расширением JAVA и помещает в него исходный код программы.
- С помощью компилятора на основании исходного кода создаётся файл с расширением CLASS, в него компилятор помещает байтовый код программы — команды для виртуальной машины.
- При запуске программы загружается и выполняется файл с байт-кодом.
В настоящее время на Java написано огромное количество качественного и полезного программного обеспечения, чтобы не упускать все преимущества его использования или получить удовольствие создавая Java программы, приступим к установке виртуальной машины Java.
Java platform что это
Актуальная версия Java EE имеет номер 6.0.
При переходе на версию 5.0 изменилось и название спецификации с J2EE [ ˌdʒeɪˈtuː ˌiːˈiː ] (Java 2 Platform, Enterprise Edition), на Java Platform, Enterprise Edition, сокращённо Java EE [ ˈdʒɑːvə ˌiːˈiː ].
Версия | Полное имя | Дата публикации |
---|---|---|
1.0 | Java 2 Platform Enterprise Edition, v 1.0 | декабрь 1999 |
1.2 | Java 2 Platform Enterprise Edition, v 1.2 | 2000 |
1.2.1 | Java 2 Platform Enterprise Edition, v 1.2.1 | 23 мая 2000 |
1.3 | Java 2 Platform Enterprise Edition, v 1.3 | 24 сентября 2001 |
1.4 | Java 2 Platform Enterprise Edition, v 1.4 | 24 ноября 2003 |
5.0 | Java Platform, Enterprise Edition, v 5 | 11 мая 2006 |
6.0 | Java Platform, Enterprise Edition, v 6 | 6 декабря 2009 |
Технологии
Java EE включает в себя стандарты следующих технологий:
- Веб-сервис
- Сервлет ( javax.servlet и javax.servlet.http )
- Java Server Pages
- Enterprise JavaBean ( javax.ejb.* )
- J2EE Connector
- Java Message Service ( javax.jms.* )
- Интерфейс для обработки XML
- Java Authorization Contract for Containers
- JavaServer Faces ( javax.faces.component.html )
- Java Persistence API ( javax.persistence )
- Другие технологии, полезные для разработки бизнес-приложений.
Сервер приложений
Сервер приложений J2EE (часто называемый J2EE-контейнер) — это реализация системы в соответствии со спецификацией J2EE, обеспечивающая работу модулей с логикой конкретного приложения. Включает в себя как минимум следующие сервисы:
- EJB-контейнер, который поддерживает автоматическую синхронизацию Java объектов с базой данных (CMP — container managed persistence, BMP — bean managed persistence);
- JMS — сервис доставки сообщений между компонентами и серверами;
- управление ресурсами (доступ к СУБД, файловой системе, почтовому серверу и т. д.);
- безопасность и защита данных;
- поддержка транзакций (в том числе и распределённых, двухфазных). См. Java Transaction API.
- веб-сервер и сервлет-сервер;
- поддержка веб-сервисов.
- JSF
Разработчики J2EE-приложений также пишут свои программы в соответствии с спецификациями J2EE, что обеспечивает их работу внутри таких серверов.
Технологию J2EE рационально использовать для реализации крупных проектов, например для организации сложных веб-порталов и предоставления услуг онлайн, особенно если необходимо обеспечить бесперебойную работу многих тысяч пользователей.
Open Source серверы
- Apache Geronimo (использует Apache Tomcat или Jetty)
- Enhydra Enterprise (использует Apache Tomcat)
- GlassFish (использует Apache Tomcat)
- JBoss Application Server (Apache Tomcat optional)
- JOnAS (использует Apache Tomcat)
- Resin (собственный Servlet и EJB контейнеры)
- Sun Java System Application Server (Референц имплементация на основе GlassFish)
Коммерческие серверы
- ATG Dynamo Application Server (DAS)
- IBM WebSphere
- SAP NetWeaver Application Server
- Oracle WebLogic (BEA)
- Oracle Application Server
- Orion Application Server
- Borland Application Server
Отдельные Servlet/JSP Контейнеры
- Apache Tomcat — Open Source
- Caucho Technology Resin — Open Source
- Enhydra Server — Open Source
- Jetty — Open Source
Отдельные EJB Контейнеры
- Apache OpenEJB — Open Source
См. также
Ссылки
Литература
- Браун К.; Крейг Г.; Хестер Г. и др. Создание корпоративных Java-приложений для IBM WebSphere. — Кудиц-Образ, 2005. — С. 860. — ISBN 5-9579-0061-3, 0-321-18579-X
Конкурирующие технологии
В отличие от Microsoft .NET, J2EE является не продуктом, а набором спецификаций, реализации которых на данный момент существуют от SUN, IBM, Oracle, BEA и других компаний. Microsoft .NET является более закрытым продуктом. В случае технологий J2EE, заказчик получает бо́льшую защиту своих инвестиций: если один из вендоров обанкротился или продукты, реализующие J2EE не удовлетворяют заказчика, то несложно перейти на J2EE продукты другого вендора. Кроме того, для J2EE разработок можно использовать полностью свободное программное обеспечение.
Язык и платформа Java — различия
Важнейшая проблема, с которой мы начнем наш разговор, — это разница между языком Java и платформой Java. Это весьма важно понимать разницу для будущих профессиональных программистов на языке Java, чтобы создавать гибкие, эффективные и элегантные приложения под базы данных Oracle . Удивительно, но разные авторы по-разному определяют и феномен языка, и феномен платформы. Из-за этого может возникать неясность и некоторая путаница и в том, чем отличаются язык и платформа, и в том, к чему относятся те или иные программные функции, используемые в коде приложения.
Четко очертим эти различия прямо сейчас, так как эта разница затрагивает суть самых разных тем программирования. Итак, вот эти определения.
- Язык Java — это статически типизированный объектно-ориентированный язык, над которым мы немного пошутили в разделе «Об этой книге». Надеемся, что вы уже довольно хорошо знакомы с ним. Одно из самых очевидных качеств языка Java заключается в том, что он пригоден для чтения человеком (или, по крайней мере, должен таким быть!).
- Платформа Java — это программное обеспечение, предоставляющее нам среду времени исполнения. Это виртуальная машина Java (JVM), линкующая и выполняющая ваш код в том виде, в каком он ей предоставляется. Код предоставляется в виде файлов классов, непригодных для чтения человеком. Иными словами, машина не интерпретирует непосредственно файлы с исходным кодом на языке Java, а требует предварительного преобразования этого кода в файлы классов.
Одна из основных причин успеха Java как системы ПО заключается в ее стандартизации . Это означает, что Java имеет спецификации, описывающие, как должна работать платформа. Стандартизация позволяет различным производителям и участникам разнообразных проектов создавать реализации, которые теоретически должны работать одинаково. Такие спецификации не гарантируют, насколько высока будет производительность конкретной реализации одной конкретной задачи, но вполне гарантируют правильность результатов.
Существует несколько отдельных спецификаций, управляющих системой Java. Самые важные из них — это спецификация языка Java (JLS) и спецификация виртуальной машины Java (VMSpec). В версии Java 7 это разделение соблюдается очень строго; на самом деле VMSpec уже нигде не ссылается на JLS. Если вы усматриваете в этом признак того, насколько серьезно в Java 7 поставлена работа с исходными языками, не являющимися Java, то нам нравится ход ваших мыслей, продолжайте в том же духе. Ниже мы подробнее обсудим разницу между двумя этими спецификациями.
При внимательном изучении такого дуализма напрашивается вопрос: «А какова же связь между языком и платформой?» Если в Java 7 они настолько разделены, то как они стыкуются и образуют общую систему Java?
Связь между языком и платформой заключается в совместном использовании файлов классов (файлов в формате .class). Рекомендуем серьезно изучить определение файлов классов. Эти сведения вам точно не помешают, а знание этой темы — один из способов, позволяющих хорошему Java-программисту стать выдающимся. На рис. 1. показан полный процесс создания и использования кода Java.
Рис. 1. Исходный код Java преобразуется в файлы .class, затем с ним производятся манипуляции в период загрузки, после чего он подвергается динамической компиляции
Как понятно из рисунка, код Java начинается в виде исходного кода, написанного программистом и пригодного для чтения человеком. После этого javac компилирует его в файл .class. Затем эта информация загружается в виртуальную машину Java. Обратите внимание, что манипуляции с классами и их изменение зачастую осуществляются в ходе процесса загрузки. Многие популярные фреймворки (особенно те, в названии которых присутствует слово Enterprise) преобразуют классы в ходе загрузки.
Итак, когда мы немного разъяснили разницу между языком и платформой Java, поговорим о некоторых заметных изменениях синтаксиса языка, появившихся в Java 7. Начнем с небольших синтаксических перемен, объединенных в рамках проекта «Монета». Данный пример будет поучительным для программистов, которые стремятся создавать эффективные программы под СУБД Oracle.
Что такое Java и зачем он нужен
Программисты Java ценятся, они делают сложные проекты, особенно их любят в среде разработки под Android и в различных корпоративных сферах. Вот что это за язык и почему его стоит изучать.
- Многоплатформенность. Работает на огромном количестве операционок и железа.
- ООП. Для тех, кто любит чёткие структуры и разграничение данных.
- Большое сообщество и много уже написанного кода. Нет проблем с работой и с готовыми решениями.
Минусы — тоже кратко:
- Не хватает скорости. Иногда это критично.
- Многословный код. Там, где С++ использует одну команду, Java требует пять.
Виртуальная машина
Допустим, у нас есть некий код на языке Java. Пока неважно, что там за синтаксис, как устроены классы и т. д. Просто код. Как его исполнить?
Если бы это был язык типа C++, нам нужно было бы скомпилировать его под требуемое железо или операционную систему. Скомпилировать — то есть преобразовать понятный нам код в понятные процессору инструкции. Так как процессоров много, компилировать нужно будет по-разному. Плюс в разных операционных системах по-разному устроены компоненты, кнопки, работа с сетью и т. д. Перед компиляцией программу нужно будет допилить под эти особенности.
Сила Java — в виртуальной машине JVM (Java Virtual Machine). Это такая программа, которая переводит Java-код, понятный человеку, в код, понятный процессору. Чтобы код стал универсальным, разработчики сделали виртуальные машины для каждой операционной системы и процессоров. Эти машины учитывают все особенности архитектуры своей платформы и знают, как обработать любую Java-команду. Это значит, что один и тот же Java-код можно запустить и на телефоне, и на компьютере, и где угодно ещё.
Специально для программистов: мы намеренно упростили принципы работы JRE и JVM и не говорим про байт-код, компиляцию и прочее. Вместо этого мы сосредоточились на принципах, которые помогают понять саму суть работы Java. Если вам кажется, что из-за простоты мы не описали что-то важное — расскажите об этом в комментариях.
Где можно запускать Java-код
Поэтому запускать код на Java можно везде, для чего уже была разработана JVM, то есть виртуальная машина Java. Например:
- ультрамощные серверы,
- компьютеры,
- смартфоны,
- кнопочные телефоны,
- роботы и микроконтроллеры типа Arduino, Raspberry Pi и многих других,
- фитнес-браслеты,
- GPS-трекеры,
- умные часы,
- умные телевизоры, холодильники, микроволновки, чайники и прочие домашние гаджеты,
- смарт-карты для доступа в помещения.
Представьте такую ситуацию: вы написали Java-программу, которая следит за свободным местом на диске, и как только его становится меньше 20% — выводит сообщение, мол, удали ненужные файлы. Теперь вы можете запустить эту программу везде, где есть JVM. Она сама разберётся с кодом, поймёт, для какого процессора она это делает, и запустит вашу программу. В результате один и тот же код будет следить за свободным местом на компьютере, кнопочном телефоне, смартфоне, планшете, умной микроволновке или домашней сигнализации.
Преимущества Java-программирования
Независимость от архитектуры и платформы. Вы пишете код, не задумываясь об особенностях операционной системы или процессора. Всё это берёт на себя виртуальная машина, а вы только пишете логику работы.
Объектно-ориентированное программирование. ООП — это современный стандарт программирования в коммерческих и промышленных системах. В случае с Java это получится само собой: дело в том, что, как и Ruby, Java — чистый ООП-язык. В нём даже функции превратились в методы и могут существовать только внутри класса.
Работа с памятью. Программисту не нужно следить за тем, сколько памяти расходует его программа и как её освободить, когда какая-то переменная больше не нужна. Для этого в Java встроено автоматическое управление памятью: Java не допускает её утечек и разрастания объёма, а после завершения программы освобождает все ресурсы.
Безопасность. Виртуальная машина сама следит за тем, чтобы программа не получила доступ к тому, что выходит за её полномочия. Например, Java-программа не сможет прочитать содержимое остальной оперативной памяти или связаться с другим компьютером, если это не предусмотрено изначальными правами доступа.
Большое сообщество и поддержка. Java — третий по популярности язык программирования в мире. В Сети есть тысячи сайтов, которые рассказывают об этом языке, помогают разобраться в коде или содержат готовые решения.
Стандарт в корпоративном программировании. Большим компаниям в программах нужна надёжность, стабильность работы и возможность поддерживать их долгое время. Сочетание ООП, управления памятью и независимости от архитектуры делает Java идеальным решением для этого.
Недостатки Java
Всё это звучит хорошо, но есть у Java и недостатки, весьма существенные.
Не самая высокая производительность. У С и С++ есть только компилятор, который переводит программу в машинный код. У Java такого нет, и всё делает виртуальная машина. Получается, что для выполнения Java-кода нужно делать двойную работу: процессор запускает JVM, а JVM выполняет сам код. Из-за такого подхода Java-программы в полтора-два раза медленнее, чем тот же код, написанный на С++.
Платная лицензия. С 2019 года компания Oracle, которая владеет лицензией на Java, разделила её на две части: платную и бесплатную. Если вам нужна долгая поддержка среды разработки и стабильная работа программ — берите платную лицензию, иногда стабильность важнее. Если вам не нужна поддержка и вы можете установить каждую новую бесплатную сборку самостоятельно — отдавать деньги не нужно.
Громоздкий код. Разработчики Java ставили своей целью упростить программирование на С++, и им это удалось. Цена, которую пришлось за это заплатить, — большие и длинные конструкции в языке, которые часто мешают пониманию сути того, что происходит. Сравните код, который рисует пирамидку из звёздочек, на Java и Python:
Кто и для чего использует Java
Для начала — список компаний и технологий, которые используют Java в качестве основного языка программирования:
- Amazon,
- LinkedIn,
- eBay,
- Yahoo!
- OpenOffice,
- IBM, Intel и Oracle.
Разработка под Android. Java до сих пор остаётся основным языком мобильной разработки для этой операционной системы, несмотря на растущую популярность Kotlin. Android Studio — официальная среда Java-разработки, признанная компанией Google.
Терминалы и платёжные системы. Благодаря виртуальной машине Java-код может работать на оборудовании, которое стоит в платёжных терминалах и банкоматах.
Работа с финансами. Если нужен простой и надёжный сайт по обработке платежей или переводу денег — используйте Java. Встроенные системы безопасности помогут избежать несанкционированных действий программы.
Зарплаты Java-программистов
По данным Хабр Карьеры на начало 2020 года, Java-программисты получают так:
Учитывая большое количество уже написанного кода, который надо поддерживать, Java-специалисты будут востребованы ещё очень долго. Поэтому если вы до сих пор думаете над языком для старта карьеры программиста — посмотрите в сторону Java.
С чего начать
Java — Учебник для начинающих программистов. Подойдёт для старта, хотя сам учебник написан местами тяжёлым и академическим языком.
Герберт Шилдт — можно брать любую книгу, в названии которой есть Java 8. Если нужно совсем с нуля — читайте «Java 8. Руководство для начинающих».
Если вам нужна дополнительная теория и нестандартные приёмы, почитайте «Java. Эффективное программирование» Джошуа Блоха. Подойдёт и тем, у кого уже есть опыт Java-разработки.