Java Deployment Toolkit

Рубрика: Development, Java, JavaScript/Ajax | 28 May 2008, 10:55 | Vadim Voituk

Вместе с выходом беты Java Development Kit 6u10, Sun анонсировали и выход вспомогательной, но IMHO очень полезной JavaScript-библиотеки  Java Deployment Toolkit.

Назначение библиотеки – сделать развертывание и запуск Java-приложений в среде Web (апплетов, WebStart-приложений) более простой и комфортной.
При этом библиотека берет на себя задачи по определению установленных JRE, проверки соответствия их версий минимальным требуемым приложением, установке обновлений (если необходимо) и конечно же кроссбраузерного добавления обьектов на страницу.
Получается такой себе аналог SWFObject для Java.

Использовать Java Deployment Toolkit  очень просто – достаточно подключить на web-страницу единственный JavaScript-файл:
[javascript]<script src=”http://java.com/js/deployJava.js”></script>[/javascript]

Пример добавления аплета на страницу будет выглядеть так:

deployJava.runApplet({codebase:"http://voituk.kiev.ua/demo/",
  archive:"TumbleItemProject.jar", code:"components/TumbleItem.class",
  width:"600", Height:"95"},
{maxwidth:120, nimgs:17, offset:-57, img:"images/tumble"}, "1.5")

где первый параметр метода runApplet() – параметры тэга <APPLET>,
второй – параметры, передаваемые самому апплету (значения <PARAM>),
третий – минимальная версия JRE необходимая для запуска апплета.

Что  по cути отличается от использования старого доброго тега <APPLET> только формой нотации (JSON вместо HTML).

При этом, при попытке зайти на страницу с апплетом с помощью браузера, без установленного (или с устаревшим) Java Plugin, будет предложено установить последнюю версию оного.

Embedded fever

Рубрика: Java | 26 May 2008, 08:46 | juriy

Не все веб приложения одинаковые: одни большие, даже монстроидные: работают на кластерах веб-серверов и общаются с ордами баз данных и сервисов. Другие поменьше и поскромнее – работают, как правило на одном выделенном сервере, иногда ненавязчиво беседуя с сервером баз данных. Есть еще и третьи – совсем маленькие странички, которые выполняют очень узкий круг задач и обслуживают небольшое количество пользователей: они зачастую запущены на той же машине что и СУБД.

В этой заметке я уделю внимание третьему типу приложений – совсем маленьким системам. Их функционал ограничен небольшим набором вспомогательных функций, которые, к примеру, могут поддерживать основное приложение. Давайте на секунду представим, что нам потребовалось написать такое приложение. Какие будут первые действия? Конечно, установка Tomcat и MySQL. Вам не кажется неправильным, что ради запуска пары сервлетов вам нужно установить две достаточно больших и тяжеловесных системы? Что уж говорить о поставке такого “монстра” пользователям.
[Далее...]

LinkedIn Architecture slides on JavaOne 2008

Рубрика: Development, Java, LinkedIn | 20 May 2008, 10:25 | Vadim Voituk

На прошедшей в Сан Франциско на прошлой неделе конференции JavaOne компания LinkedIn провела 2 сессии об архитектуре и взаимодействии компонент своей социальной сети.

Первая презентация имеет название “LinkedIn – A Professional Network built with Java Technologies and Agile Practices”

Очень интересный overview о базовой архитектуре и реализации компонент LinkedIn и организации процесса разработки и тестирования.
Лично мне было интересно узнать о технологиях и библиоетках используемых для реализации столь масштабной архитектуры.
Оказывается, что LinkedIn на 99% реализаован на Java и использует Spring (со своими расширениями), ActiveMQ, Eh-cache, Lucene, HttpClient, Jetty, Louis, Groovy/Grails, DWR, Hudson, Eclipse+Mylyn, Jira, JUnit, HtmlUnit, MySQL, Oracle RDBMS и другие.
Оставшийся 1% не-Java кода – это С++ реализация огромного графа связей в постоянной памяти (так называемый Сould). [Далее...]

Введение в Scala

Рубрика: Java, Ссылки | 13 May 2008, 17:52 | Vadim Voituk

Вчера, при написании заметки про каррирование замыканий в Groovy, вспомнил о том, что не так давно на developerWorks.ibm.com читал отличную вводную статью о функциональном языке прграммирования для JVM – Scala.
Собственно сама заметка:
На русском: Scala для Java-разработчиков: Функциональное программирование вместо объектно-ориентированного
In English: Java developer’s guide to Scala: Functional programming for the object oriented

Must read для каждого, кто хочет хотя бы понять принципы функционального программирования на простом примере. А также предварительно прочитав это – must read для тех, кто не хочет :)

Updated:

Чет меня все ещё не отпустила романтика ФЯ, потому приведу ещё несколько русскоязычных заметок на тему Scala:

Буду рад, если кто-то поделится ещё толковыми статьями этой тематики.

Undecorated JFrame recipe

Рубрика: Java | 29 April 2008, 18:34 | juriy

Swing и недекорированные окна.

В этой заметке я хочу рассказать о том, как избавлять фреймы от стандартных декораций Windows – рамок окна, заголовка, кнопок из правого верхнего угла.

Мотивация.
Избавиться от стандартного оформления может захотеться по разным причинам. Чаще всего это причины эстетического характера – хочется иметь полный контроль над внешним видом окна, самостоятельно определить внешний вид рамок и кнопок. Иногда рамка попросту неуместна – например, если вы хотите сделать сплеш-скрин, совмещенный с формой ввода логина.

Решение.

Самый простой способ решить задачу – использовать метод JFrame setUndecorated(true). Вот пример кода, который отображаает фрейм без декораций.
[Далее...]

JavaEE interview questions

Рубрика: Development, Java, Работа | 15 April 2008, 09:38 | Vadim Voituk

Уже неоднократно в нашем блоге публиковались списки вопросов для различных собеседований.

Например не так давно Юра опубковал свой список вопросов на JSE девелопера, а до того и я нашел в сети 30 вопросов к соискателю на должность Java-разработчика.

Продолжая начатую тему, представляю ещё один небольшой список вопросов на JEE-разработчика.
По неподтвержденным данным большинство данных вопросов задаются соискателям в Sun Microsystems. Вопросы собрал и сгруппировал мой бывший коллега Павел Яцюк. [Далее...]

Java + Groovy on Google AppSpot

Рубрика: Google, Groovy, Java | 14 April 2008, 09:07 | Vadim Voituk

Надеюсь что рассказывать что такое Google App Engine никому не нужно, но все же в двух словах напомню:
Google App Engine – это платформа для хостинга различных приложений на оборудовании (как не сложно догадаться) Google. Такой себе следующий шаг после генератора домашних страничек на Google Pages.
К сожалению среди языков программирования пока поддерживается только Python, но активно обсуждается и дальнейшая поддержка других языков.

Будучи приверженцем Groovy, а также ввиду того, что последнюю программу на Python я написал лет так 6-7 назад, прошу всех, кому это читает проголосовать за внедрение поддержки Java (а с ним и Groovy) в Google App Engine.
Для этого нужно всего-то зайти а баг-трекинг проекта по адресу http://code.google.com/p/googleappengine/issues/list, найти тикет с номером 1 и кликните рядом с ним звездочку.
Получится где-то так:

Также желательно, но не обязательно, написать в комментариях к тикету что-то вроде “очень хочется Java + Groovy” :)

Всем заранее спасибо!

Превращаем Java Enums в Groovy Ranges

Рубрика: Groovy, Java | 7 April 2008, 15:09 | Vadim Voituk

Идея заметки не моя, но очень мне понравилась.
Оригинал тут: Turning Java enums into Groovy ranges

Предположим что у нас есть простой Java Enum:
[java]

public enum Season {
  WINTER, SPRING, SUMMER, FALL
}

[/java]

Так как enum-ы реализуют интерфейс Comparable, то в них есть метод compareTo().
Тем не менее их значения нельзя использовать с операторами < и >.
Потому такой Java-код даже не скомпилируется
[java]if (Season.WINTER > Season.FALL) { … }[/java]

Напротив, в Groovy же, для любого класса, который реализует Comparable можно использовать операторы < и >. Потому такой Groovy-код, работает как и ожидается:
[java]assert Season.FALL > Season.WINTER[/java]

Так как enum уже реализует Comparable, то для того, чтоб превратить его в Groovy Range, осталось добавить только методы next() и previous().
Вот один из способов сделать это, используя метод ordinal() enum-а:

[java]

public enum Season {
    WINTER, SPRING, SUMMER, FALL;

    Season next() {
        Season[] vals = Season.values();
        return vals[(this.ordinal() + 1) % vals.length];
    }

    Season previous() {
        Season[] vals = Season.values();
        return vals[(this.ordinal() - 1 + vals.length) % vals.length];
    }
}

[/java]

Теперь в Groovy можно написать так:
[java]

(Season.WINTER..Season.FALL).each {
    println it
}
// ...
for (s in Season.values()) {
    println (s++)
}
// ...
for (s in Season.values()) {
    println (s--)
}

[/java]

Налицо использование, принятой в Groovy, концепции Duck Typing, когда нас не обязуют декларировать реализацию интерфейся для использования с языковыми операторами (в данном случае “больше-меньше”). Достаточно только реализовать необходимые методы, без указания какого-либо дополнительного implements в сигнатуре класса.

Кстати в Java есть метод EnumSet.range(), который возвращает коллекцию значений enum-а, которая в свою очередь может быть использована в Java5 for-each цикле:
[java]for (Season s : EnumSet.range(Season.WINTER, Season.FALL) { … }[/java]
Но в в таком случае использование операторов < и > все равно не допускается.

New jEdit look with TangoIconset

Рубрика: Development, Java | 27 March 2008, 10:48 | Vadim Voituk

Буквально вчера в trunk-ветку jEdit был закоммичен патч, позволяющий использовать разные наборы иконок в интерфейсе редактора.
Вместе с патчем прилагался дополнительный набор иконок – TangoIconset, который будет использоваться в jEdit по умолчанию начиная с версии 4.3pre14.
Наконец-то можно забыть про убогий и совсем “немодный” набор иконок, созданный ещё во времена Славы Пестова и получить среду разработки с современным внешним видом, который радует глаз.
jedit-pre14-icons.PNG

Для тех, что не хочет ждать релиза выкладываю SVN-версию здесь: jEdit v4.3pre14 build 12323.jar (4.3 Мб)

Особенности использования Toplink JPA на Tomcat

Рубрика: Development, Java | 26 March 2008, 14:42 | Vadim Voituk

Довелось попробовать Oracle Toplink Essentials в среде не-J2EE контейнера, а на старом-добром Tomcat.
При этом методом проб, ошибок и гугления узнал о нюансах, которые неплохо бы знать на будущее: [Далее...]

Страница 3 из 1012345678910