Последнее изменение: 22 сентября 2007г.

Средства разработки

Средства разработки тоже можно разделить на несколько групп:

Сразу хочу предупредить – я говорю в первую очередь о бесплатных ресурсах. Либо о тех, которые можно получить бесплатно на определенных условиях. Да, и еще – все ссылки открываются в отдельном окне.

Java logo

Прежде всего, конечно, основной ресурс. То, с чего все начиналось. Сайт Java компании Sun Microsystems – http://java.sun.com/. Этот сайт содержит большее количество документации, нежели любой другой. Не говоря уже о том, что все SDK и куча дополнительных библиотек тоже родом отсюда. В общем, прежде чем искать документацию, библиотеки и т.п. в другом месте, я рекомендую посмотреть тут.

Итак, продолжим.

Среды разработки (IDE)


IDEA logo

IntelliJ IDEA компании JetBrains. На мой взгляд, это лучшая IDE на сегодняшний день. В ней есть все, что необходимо и даже сверх того. Она имеет очень мощные возможности в плане рефакторинга, умеет работать с разными VCS, включая CVS, Subversion и др., интегрируется со множеством сервлет-контейнеров и серверов приложений, включая Tomcat, JBoss, GlassFish, WebLogic и WebSphere. Имеет встроенную поддержку Hibernate, JSF, Struts, Spring, EJB 3.0, JPA 1.0. И еще очень много всего, включая HTML и CSS. Я в своей жизни работал с JBuilder, Eclipse, NetBeans, VisualAge, и в итоге остановился на IDEA. На последних двух моих местах работы IDEA была корпоративным стандартом. Несмотря на ее цену.

То, что IDEA платная, для разработчиков может быть неким минусом. Однако тут есть два интересных момента. Первое – лицензия бесплатна для Open Source Community. На каких условиях она предоставляется – написано на сайте. И второе – у JetBrains всегда доступна следующая версия, находящаяся в разработке. И доступна она бесплатно! Надо всего лишь зарегистрироваться вот тут – http://www.intellij.net/. После чего в разделе EAP (Early Access Program) можно скачать раннюю версию и получить к ней ключ. Кстати, это может оказаться весьма полезным. Версия, поддерживающая Java 5, например, была доступна еще до официального выхода Java 5! И она была весьма стабильной, я не помню, чтобы у меня были проблемы. Это при том, что поддержка Java 5 у Eclipse, например, появилась только в версии 3.1, вышедшей сильно позже Java 5.

Eclipse logo

Eclipse – Пожалуй, основной конкурент IDEA. Когда-то это был проект IBM VisualAge (кстати, я был им весьма доволен), после чего этот проект выделился в Open Source, при активной поддержке все той же IBM. Eclipse представляет собой конструктор: для поддержки чего либо выше базовых возможностей (вплоть до визуального редактора) надо ставить плагин. Один, второй, третий, десятый. Честно сказать, мне с этой IDE работать некомфортно. Может, дело привычки, хотя у меня есть довольно много претензий к usability. Плюс по возможностям, критичным для меня, Eclipse все-таки порядочно уступает IDEA. Хотя сторонников у этой IDE весьма немало. И для кого-то расширяемость Ecplise с помощью плагинов является большим плюсом – можно разработать свое приложение, не тратя сил на всю инфраструктуру – оконный интерфейс и много другого.

NetBeans logo

NetBeans – еще одна бесплатная IDE. Активно продвигается Sun Microsystems, у них всегда есть версия SDK с NetBeans в одном пакете. Когда-то Sun делала свою среду на основе NetBeans (называлась она сначала Forte, потом Sun ONE Studio), но потом перешла на использование оригинальной версии. Я долго работал именно с Forte/SunONEStudio, потом перешел на IDEA. В данный момент (в версии 6) эта IDE существенно продвинулась вперед по сравнению даже с 5-й, но возможности ее меня лично не устраивают, хотя бы в плане рефакторинга. А вот визуальный дизайнер у NetBeans, кстати, чуть не самый лучший из имеющихся.

Перейдем теперь к серверам.

Сервлет-контейнеры и серверы приложений


Tomcat logo

Tomcat – один из лучших сервлет-контейнеров на сегодняшний день. Если не самый лучший. Когда-то он уступал по скорости Caucho Resin, да и то ненамного, однако сейчас они уже практически сравнялись. Что немаловажно, этот сервер является reference implementation технологий Servlet и JSP, т.е., как правило, поддержка последних стандартов появляется у него раньше других. В данный момент Tomcat 5.5 поддерживает Servlet 2.4 и JSP 2.0. Он работает на базе Java 5, так что поддержка последней версии языка тоже есть. Сервер прост в настройке, весьма интуитивен, тем более, что для него существует консоль администратора. Нареканий к нему у меня не было, я довольно быстро перевел под него домашний сервер. Да, и еще – он бесплатный.

Tomcat поддерживает балансировку нагрузки и кластеризацию (распределенные сессии). Но эта поддержка, на мой взгляд, скорее в качестве приятного дополнения, нежели средство для создания серьезных систем. Для серьезных систем крайне желателен "железный" (hardware) балансировщик. Он гораздо более быстрый.

Resin logo

Caucho Resin – возможно, самый быстрый сервлет-контейнер сегодня. Во всяком случае, у нас в рабочей системе стоит именно он, и именно по причине производительности. Он как-то менее интуитивный, чем Tomcat, но особых проблем не вызывает, документации по нему много. 10 января 2005 появилось сообщение, что Resin сертифицирован Sun Microsystems как J2EE-сервер, что означает, что у него появился и EJB-контейнер и Resin стал полноценным сервером приложений. Однако по этому поводу ничего сказать не могу, я не копался в нем в этом направлении.

Помимо вышеперечисленного Resin, так же как и Tomcat, поддерживает балансировку нагрузки и распределенные сессии, что означает, что на нем так же можно строить масштабируемые системы. В свое время мы даже делали систему, работающую на двух серверах, с использованием репликаций сессий. Долго потестировать ее нам не удалось – продукт продали – но за несколько месяцев проблем мы не видели.

Resin имеет бесплатную (GPL) версию наравне с платной. Отличаются они разве что производительностью, платная в большой степени работает на основе native-библиотек.

JBoss logo

JBoss Application Server – один из самых популярных серверов приложений. В немалой степени этому способствует то, что он бесплатен. Он базируется на Tomcat в качестве сервлет-контейнера, EJB-контейнер у него собственный. Вообще, JBoss это скорее сообщество разработчиков, помимо собственно сервера приложений у них есть много других продуктов. Естественно, все они хорошо работают с сервером приложений, что в тоже способствует его популярности, тем более, что и продукты не самые плохие. Сразу признаюсь, что о JBoss как о сервере приложений я не могу ничего сказать, ибо с ним не работал. Но если я буду выбирать сервер приложений, JBoss, пожалуй, будет первым, на который я посмотрю.

Пойдем дальше. На очереди ...

Библиотеки


Log4J logo

Log4J – очень мощная библиотека для журналирования (logging). События могут быть направлены в файл (как в виде обычных текстовых записей, так и в виде XML), в базу данных через JDBC, в подписку JMS-сервера, в сетевое соединение (как через обычный сокет, так и с помощью протокола telnet), в event log Windows NT. Таких "пунктов назначений" для событий сможет быть одновременно несколько. В библиотеке определено семь (в 1.2.8) уровней журналирования, влияющих на фильтрацию событий, при этом можно определить и свои уровни (хотя на мой взгляд имеющихся более чем достаточно). Библиотека содержит несколько реализаций MBean для обеспечения мониторинга и управления через JMX. В общем, мне лично трудно придумать что-то, что было бы нужно для журналирования и чего в этой библиотеке нет. Она является чуть ли не стандартом де-факто для журналирования в Java-приложениях. Да, и все это бесплатно.

Hibernate logo

Hibernate – библиотека, реализующая отражение объектов Java на реляционные базы данных (Object-Relational Mapping). Мне приходилось с ней работать, и я нахожу ее весьма удобной. Эта библиотека позволяет свести к минимуму усилия, требующиеся для того, чтобы обеспечить сохранение объектов в базе и восстановление их из нее. Все, что нужно – создать схему в базе, требуемые объекты (в простейшем виде – конструктор без параметров, поля данных и методы доступа getXXX/setXXX) и несколько конфигурационных xml-файлов. Остальное сделает библиотека. Существеннен тот факт, что объекты, в отличии от тех же Entity EJB, никак не завязаны на интерфейсы, специфичные для Hibernate, и могут помимо данных содержать любую логику.

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

Velocity logo

Velocity – библиотека для работы с шаблонами. Честно говоря, вот тут я просто не знаю, как сформулировать ее предназначение вкратце, одним предложением. На английском это template engine. В шаблонах Velocity можно использовать язык выражений, сродни тому, что применяется в JSP – проверка условий, организация циклов и т.п. Данные в шаблон вносятся из контекста, передаваемого в обработчик. Эта библиотека может оказаться весьма полезной, когда нужно, скажем, генерировать динамические страницы, но с JSP связываться по каким-то причинам не хочется. В этом случае связка сервлета и Velocity оказывается очень удобной.

Последний подраздел – ...

Прочие ресурсы


Ant logo

Ant. Думаю, теперь уже не встретишь разработчика, который хотя бы не слышал про этот пакет. Фактически, он представляет собой реализацию командного файла. Изначально ant поддерживает очень большое количество действий, покрывающих львиную долю потребностей разработчика. Если же нужного действия нет, можно написать собственное – API доступен.

Самое главное преимущество ant – переносимость. Командный файл основан на xml, поддерживаются любые разделители пути и имени файла. Таким образом, любой командный файл (как правило, он называется build.xml) может быть исполнен на любой платформе, где есть реализация ant. Я лично использую ant во всех своих разработках, распространяемых с исходным кодом.

MySQL logo

MySQL – сервер баз данных. Прост в настройке и использовании. Поддерживает транзакции и внешние ключи. К нему есть весьма удобные клиенты. Есть JDBC-драйвера. И всё это бесплатно. Что делает этот сервер практически незаменимым в небольших разработках и в качестве тестового.


JClassLib logo

JClassLib – очень удобный дизассемблер. Если нужно посмотреть на то, как устроены скомпилированные классы (а иногда вас могут ждать сюрпризы! я приводил пример в статье о модификаторах доступа) – дизассемблер может оказаться очень кстати. Простой, интуитивно понятный и, что немаловажно, бесплатный.


* * *

Безусловно, существует множество других библиотек, серверов, IDE. Я лишь обозначил те, которые, по моему опыту, интересны прежде всего начинающим разработчикам. Человеку же, который собирается, например, строить распределенный кэш, вряд ли нужно давать наводки на какие-то библиотеки. Он сам способен найти то, что наилучшим образом отвечает именно его запросам. Это опыт и ничего более.