Pull to refresh

Java World

Reading time5 min
Views4.6K


Недавно на Хабре был топик про спонсирование Apache компанией Microsoft. Но то ли автор не доконца разобрался в теме, то ли новостной ресурс, ссылка на который была представленна: в общем, сложилось впечатление, что MS спонсирует разработку Web-сервера Apache. На самом же деле Microsoft спонсировал Apache Software Foundation, которая состоит из многих проектов, и как стало известно из блога Microsoft, спонсируют и используют они не только, и не сколько Web-сервер:

«It is a strong endorsement of The Apache Way, and opens a new chapter in our relationship with the ASF. We have worked with Apache POI, Apache Axis2, Jakarta, and other projects in the last year, and we will continue our technical support and interoperability testing work for this open source software.»

К сожалению, на Хабре не так много постов о Java, поэтому в этом я постораюсь рассказать о многих важных и интересных уголках Java мира, а заодно расскажу что же это за загадачные Apache POI & Axis2.



Open Source



Раз уж наш разговор мы начали с Apache Software Foundation, давайте его продолжим. Для любого Web-разработчика Apache это в первую очередь Web-сервер, а для многих из них — это только Web-сервер. Однако, если Вы спросите Java-разработчика про его любимый проект ASF, это совсем не обязательно будет Apache HTTPD. В ASF более полусотни топовых проектов, практически все они написаны именно на Java. В цитате Microsoft, например, речь идёт об Apache POI — библиотеки для работы с файлами Office & Apache Axis2(подпроект Apache Web-services) — библиотеки для работы с SOAP/REST/… Описывать все проекты ASF я не стану, потому что большинство из них всё же для Java-разработчиков, так что отмечу лишь те, которые могут заинтересовать читателей Хабра:
  • Hadoop — распределённые вычисления, ответ Google BigTable;
  • Shindig — реализация сервера для Google OpenSocial приложений;
  • Wicket — Web-фреймворк. Почему я его выделил? HTML содержащий 0% программного кода, чище чем JSP/ERB/Django Templates и всё остальное;
  • Lucene — полнотекстовый поиск.

Я надеюсь, что после этого рассказа слово «Apache» будет напоминать вам не только индейцев и Web-сервер. Вообще, у Java очень сильное Open Source движение: это Apache & Eclipse Sofware Foundations, самое большое(среди языков) количество проектов на SourceForge, а так же Java.net, CodeHaus и многие-многие другие проекты.

Стандарты



Если кто-то из вас задавался вопросами: «Как J2ME смогла разползтись по всем телефонам в мире?» или «Почему Oracle, IBM, SAP, Red Hat предоставляют свои Middleware на основе J2EE?» — то стандарты и есть один из ответов на этот вопрос. Все компоненты в Java мире стандартизированны — это позволяет вендорам создавать свои виртуальные машины, сервера приложений, библиотеки, которые будут совместимы между собой, если они следуют стандартам. Здесь есть 2 ключевых слова: JCP(Java Community Process), процесс, определяющий принятие стандарта JSR(Java Specification Request), состоящий из спецификации, реализации и набора тестов для проверки соответствия стандарту.

На JCP частенько выливается немало критики, иногда из-за разногласий в принятии решений, иногда за излишний бюрократизм. Впрочем, сообщество не всегда следовало стандартам: до недавнего времени многие разработчики предпочитали вместо J2EE 1.4 использовать Web-stack Tomcat+Spring+Hibernate. JCP отреагировало и реализацию EJB 3.0 можно назвать клоном Hibernate, а стандарт обращения к данным(JPA) их объединяет и позволяет заменять одну технологию под капотом на другую. Создатели Spring же являются основными участниками следующей шестой ревизии JEE.

JVM

Виртуальная машина Java(реализация от Sun называется HotSpot) по праву заслуживает отдельной статьи. Я не буду говорить об архитектуре и основных принципах JVM, которые делают платформу Java пригодной для задач, где требуется скорость уровня C++, а буду говорить скорее о текущих трендах. Наверное многие со мной согласятся, что основной из них это мультиязычность. За последний год Sun наняла разработчиков JRuby & Jython, Google использует на своих серверах Rhino и будет основным коммитером в следующей версии после публикации спецификации JavaScript2(ES4), ну а по заверениям Caucho их Quercus(реализация PHP для JVM) не уступает Apache+mod_php+APC. Многое делается и в разработке следующего OpenJDK седьмой версии для улучшения поддержки динамических языков, но уже сейчас вы можете создавать приложения на PHP/Ruby/Python/JavaScript и запускать их на JVM. Кроме этих популярных языков существуют ещё два JVM-only языка Groovy & Scala, которые можно назвать динамической и функциональной Java. Стоит отметить, что грядущие версии трёх лидирующих Java IDE поддерживают все вышеперечисленные языки.

Я лично не ожидаю появление The Next Big Language, зато ожидаю появления единых платформ. Уже сейчас разработчики пользуются едиными средами разработки, системами управления версиями. Следующий шаг по моему мнению — разработка на различных языках под JVM, CLR, Tamarin.

Google Web Toolkit

Какой главный тренд в разработке последнего десятилетия? Правильно — Web. А в пользовательских интерфейсах? И снова правильно — AJAX. Мы используем его в текущем проекте и на данный момент очень довольны. Для тех, кто до сих пор не в курсе, GWT — это компилятор Java кода в JavaSctipt, он позволяет нам использовать Java(следовательно и все Java Best Practices) на клиенте и генерирует по заверениям Google очень быстрый JavaScript код. У Google неплохая документация на сайте, однако если вы хотите встроить GWT в ваше текущее окружение, могу порекомендовать книгу Pro Web 2.0 Application Development with GWT, в которой приведены примеры интеграции с самыми популярными Java компонентами.

Kilim



Этот фреймворк скорее всего ещё не знаком даже многим следящим за новостями в мире Java разработчикам. Одним из самых популярных взрывов блогосферы разработки в последнее время стал язык Erlang, позволяющий создавать распределённые приложения построенные на Actor model. Единственным ответом до последнего времени была Actors библиотека для языка Scala, новый ответ — Kilim. Я вряд ли смогу объяснить все тонкости работы, но могу посоветовать почитать документацию на сайте разработчика и послушать его выступление на Google Tech Talks.

IntelliJ IDEA



Как однажды сказал в одном интервью DHH(создатель Ruby on Rails):

«While I was doing Java, IntelliJ was the only thing that kept me from killing myself in frustration over the language.»

IntelliJ IDEA наверное мой самый любимый продукт, который ассоциируется со словом Java. Так же берёт гордость за то, что это результат трудов наших русских программистов. Программирование в ней чем-то напоминает парное, потому что среда всё время подсказывает тебе твои ошибки или альтернативные решения. С помощью IDEA можно так же следить за всеми трендами в Java мире — например полноценный плагин для Groovy & Grails есть только в ней на данный момент. Так же радует, что все используемые нами компоненты(Spring, Hibernate, GWT, Flex, Maven, JUnit) поддерживаются из коробки. Кстати, хоть этот продукт и платный вы можете его использовать и бесплатно. Hint: у Jetbrains существует EAP, который позволяет скачивать и использовать свежий рабочий билд IDEA в течении месяца. EAP выходят раз в неделю. Уловили? ;)

Я думаю, что на первый раз хватит. В каком-то мейл-листе я наткнулся на комментарий ~ «Java разработчики убогие, потому что живут в своём маленьком JVM мирке». Так вот… Я бы хотел всем пожелать таких мирков, и если эта статья будет кому-то интересна, то в мире Java есть ещё много интересных уголков, до которых я так и не добрался и постараюсь сделать это в следующий раз.
Tags:
Hubs:
Total votes 28: ↑26 and ↓2+24
Comments20

Articles