Java World



    Недавно на Хабре был топик про спонсирование 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 есть ещё много интересных уголков, до которых я так и не добрался и постараюсь сделать это в следующий раз.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 20

      0
      познавательно, однако.
      а про ant забыли??
        0
        Ну возможно потом упомяну. Хотя мы с него перешли на Maven - для крупных проектов самое то.
          0
          Даже для маленьких проектов Maven подходить очень хорошо, лучше чем Ant. Кстати, есть очень полезный ресурс http://www.mvnrepository.com/ на котором можно поброузить многие Maven артефакты, т.е. другими словами Java библиотеки и фрэймворки. Судя по графику сейчас их там больше 30000, но скорее всего разные версии так же считаются. Разумеется, многие из этих библиотек имеют префикс org.apache в названии.
        0
        Да уж, мир Java оказался шире чем я думал раньше… Только странно, что так мало упомянут Tomcat.
        P.S. Как студент осваивал разные языки и IDE, и, в общем-то, согласен насчёт IDEA — это лучшая IDE из всех виденных. Очень способствует производительности, и удобству работы.
          0
          Ну статья всё же более PR-ная чем, практичная. Но если будет спрос, возможно выйдет вторая с описанием серверов, средств для сборки проектов, фреймворков и т.п.
          +2
          Ждём продолжения.
            0
            оригинальная подборка :))

            >Hint: у Jetbrains существует EAP, который позволяет скачивать и использовать свежий рабочий билд IDEA в течении месяца. EAP выходят раз в неделю. Уловили? ;)

            не поможет, насколько я помню

            "Стоит отметить, что грядущие версии трёх лидирующих Java IDE поддерживают все вышеперечисленные языки."
            сравните с

            >JVM-only языка Groovy & Scala
            как бы не совсем: http://www.scala-lang.org/docu/clr/index…
            "полноценный плагин для Groovy & Grails есть только в ней на данный момент."

            ps весь текст сами писали или частично "заимствовали"? ;)
              0
              > не поможет, насколько я помню

              Только что обновил - сработало. Mac OS 10.5.4, Diana 8618.

              >как бы не совсем: http://www.scala-lang.org/docu/clr/index

              Да, Scala есть для CLR, но сами разработчики не отрицают, что их основная цель JVM и если заглянуть в trunk и посмотреть на бренч dotnet можно в этом убедиться по его полуторагодовой неактивности.

              > сравните с

              На текущий момент поддержка такова, если мне не изменяет память:
              Eclipse: Java, JavaScript, Ruby, PHP, Python, Scala, Groovy(последние два существуют, но "не ахти")
              IDEA: Java, JavaScript, Ruby, Groovy || в восьмёрке Python, Scala
              Netbeans: Java, JavaScipt, Ruby || в 6.5 PHP, Python, Groovy

              Когда говорил про IDEA я имел ввиду то, что они первые сделали полноценный плагин для Groovy & Grails. Так что не вижу противоречия в моих словах.

              > ps весь текст сами писали или частично "заимствовали"? ;)

              Было бы откуда) Проще самому написать.
                0
                сработало - продлился триал?
                хотя я и так вижу, что в 8ке они изменили лицензирование, в 7ке было по-другому.
                +в 8ке, увы, jetgroovy не работает :(
                >первые сделали
                а, теперь понятно
                  0
                  Да, было до 7 августа, теперь до 28.

                  Groovy не пользуюсь, так что увы ничего посоветовать не могут. У них там сильно изменилась структура в восьмёрке в плане сторонних языков, так что практически все плагины для семёрки не работают. Но учитывая, что это их собственный плагин - думаю скоро сделают.
                    0
                    Ситуация такова, что разрыв между эклипсом и идеей с каждым патчем все меньше, а в многих областях так вообще идея слабоприменима. При этом эклипс абсолютно бесплатен. В итоге, чую, что дела у jetbrains идет не очень хорошо и им придется сделать какой-то финт ушами, чтобы выплыть. Не припомню ни одной конторы, которая бы легально пользовалась идеей, такие наверняка есть, но их дб намного меньше чем тех, где эклипс, он сейчас почти повсеместен... увы.
                      0
                      IDEA как раз и сильна своей гармоничностью и единством. В связи с тем, что основная разработка ведётся in-house, количеством фич приходится жертвовать. Пока что мой Technology Roadmap совпадает с JetBrains.

                      Eclipse попробую когда они наконец доделают SWT-Cocoa под Mac. Ещё неплохо стартанул Netbeans - функционал у них как на дрожжах растёт.
                        0
                        IDEA как раз и сильна своей гармоничностью и единством. В связи с тем, что основная разработка ведётся in-house, количеством фич приходится жертвовать. Пока что мой Technology Roadmap совпадает с JetBrains.

                        Eclipse попробую когда они наконец доделают SWT-Cocoa под Mac. Ещё неплохо стартанул Netbeans - функционал у них как на дрожжах растёт.
                        0
                        Не соглашусь. Идея хороша тем, что фичи(и большинство плагинов) работают как положено, а не как повезёт(камень в огород eclipse), да и юзабилити там куда выше эклипсового/нетбинсового. Да, возможно даже _работющих_ фич в эклипсе/нб больше, но так ли они нужны? Мне, например, нужен groovy/grails плагин, который пока что лучше всего работает в идее.

                        зы лично я себе купил :)
                          0
                          Это все конечно верно, но как я понимаю не спроста руководитель всей это интеллиж идеи оттудова год назад свалил. Видимо, он не придумал как спасать проект. жетбрейнс врядли может себе позволить подарить опенсорс коммунити проект за 40 лямов, как поступил ИБМ с эклипсом.
                          А плагинов под эклипс намного больше и хотя они действительно аццки нестабильны и ваще глюк редкостный, проект просто обрастает некоторым количеством бубнов и в принципе пользоватся можно. Опыт показывает, что набор бубнов почти всегда находится. А эклипс 3.4 по слухам еще ближе к функциональности идеи оказался.

                          И я кстати горд вами, что купили, меня жаба душит, хотя периодически локальные проектики кидаю на идее, благо код пишется раза в 1.5 быстрее и глюков несравнимо меньше. Правда и у идее в каждой новой версии сейчас аццкие баги встречаются, каждый ра приходится ждать пока не выйдет некоторое количество патчей, чтобы работать можно было. А убедить работодателя закупить всей конторе Идею, удается крайне редко, в итоге я не особо вижу кто сейчас ее закупает.
                            0
                            а можно пруфлинк про руководителя?

                            да и потом, лицензия на одну копию стоит около недельной зарплаты среднего разработчика, т.е. благодаря быстродействию окупается за 2(!!!) недели ;)

                            зы вы случайно не линуксоид? ;)
                0
                Если верить Java Technology Concept Map, то в мире Java как-то уж очень много аббревиатур/технологий...
                Понятно что можно по одиночке со всеми ними рассправится, но с проводником это будет гораздо проще и быстрее. Так что просим и ждем продолжения! ;)
                  +1
                  резюме ява разработчика как правило на 50% состоит из абревиатур. =)
                  +1
                  Поправочка: Java - это не мир, это вселенная.
                  Только фрэймворков для построения View (по MVC) насчитывается более 60 (http://wicket.apache.org/introduction.html): простые, которые следую модели HTTP запрос-ответ (Struts), основанные на AJAX (GWT), и абстрагированные от модели HTTP (JSF, Wicket).
                    0
                    Спасибо! В блог Java не хотите поместить?

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое