What non-Java language are you most interested in running on the JVM?

Рубрика: Development, Groovy, Java | 7 February 2007, 14:17 | Vadim Voituk

На Java.net завершился опрос “Какой не Java-язык вы хотели бы запускать на платформе JVM?”.

Я ожидал что будет очередное флеймообразующее обсуждение из серии “какой язык лучше”, но так не случилось.

Показательно, что по результатам лидирует Groovy. Но этого наверное и стоило ожидать в связи с растущей популярностью “рельсовых” web-фреймворков и как результат повышеным интересом к GRails.

Удивило, что организаторы опроса добавили в список языков Visual Basic, и ещё больше удивило что почти 5% отпрошенных отдали ему свои голоса. Куда катится этот мир!

Среди предложенных пользователями вариантов мелькали Scala, Scheme, F3, C, E, K, Fortress, Fortan, Beanshell, OCaml, Haskell, Lisp, Pnuts, Smalltalk, Fortress и даже Delphi/Object Pascal вместе C# (мсье знает толк в извратах).
Хорошо, что ещё никто brainf*ck не предложил :)

Догадайтесь за какой голосовал я?

P.S. Помогите найти ссылочки на остальные языки!

What is groovy

Рубрика: Development, Groovy, Java | 26 January 2007, 18:31 | Vadim Voituk

Около полугода назад я впервые познакомился с Groovy – динамическим языком для платформы Java.
Он включает разнообразный syntax-sugar (как бы так правильно перевести?) из Python, Ruby, Smalltalk но при этом использует всю мощь JRE и близкий к Java синтаксис.
Вариантов для использоавния такого чуда техники масса: от написания рабочих простеньких утилит и shell-скриптов, до продуктивной разработки web-приложений, тест-кейсов, и сценариев сборки.
Кстати для последних двух задач у Groovy есть встроенные средства: поддержка Ant и JUnit на уровне языка.
Т.к. Groovy компилируется в .class – файлы, то связать поделки на Groovy с Java-программой труда не составляет.
Таким образом проект может быть запрототипирован на Groovy, а потом, при необходимости, понемногу заменять его Java-кодом.

Программа HelloWorld на Groovy будет выглядеть так:

println "Hello world!" // ";" можно не ставить 

Компиляция

groovyс Hello.groovy

На выходе получаем Hello.class
Запуск

groovy Hello

Т.к. в динамических языках фаза компиляции часто опускается, достаточно просто

 groovy Hello.groovy

По аналогии с Python у Groovy есть графическая (groovyConsole) и текстовая (groovysh) консоль.
Ввод команд в консоль необходимо завершать вызовом команды “go”.
Также достаточно интересной мне кажется команда “inspect” – открывает Groovy Object Browser на последней выполненой операции – такая себе минимальная IDE.

Но это все мелочи жизни.
Самое интересное в Groovy это поддержка на уровне синтаксиса списков, хэш-таблиц и замыканий:

[ 10, 20, 40, "Vadim", "Hello" ].each({println it});

или ещё веселее

["Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ].each{it,val ->
println it  + "=>" + val
}

И под конец хотелось бы добавить о возможности доступа к членам класса а-ля JavaBeans (вылетело из головы название термина) и передаче значений параметров в конструктор.

import javax.swing.*
def x = new JFrame(title:"Hello", size:[200, 300],
defaultCloseOperation:JFrame.EXIT_ON_CLOSE)
x.visible = true

Для “затравки” приведу ещё ссылку на статью “GUI in IronPython, Groovy and JRuby“, предлагается построить простенький GUI на 3х скриптовых языках, а также ссылку на колонку “Practically Groovy” на сайте IBM.

Apache/PHP VS Tomcat/Groovy V.2

Рубрика: Development, Groovy, Java | 15 November 2006, 14:15 | Vadim Voituk

Не удовлетворившись результами сравнения производительности описанного в предыдущем посте, я сделал выводы что во всем виноват JDBC и начал искать возможности повышения производительности работы с БД.

Дотаточно здравой мыслью показалось построение пула соединений к базе данных.
Создал DataSource и переписал Groovelet для использования соединения из пула.
Провел замеры производительности и ВУАЛЯ!
Значение Request Per Second показало числа от 480 до 650, при значениях для Apache+PHP от 280 до 350.

Следующим шагом планирую реализовать кеширование данных в Groovelet-e с помошью JCS.

After JUG

Рубрика: Development, Groovy, Java | 13 November 2006, 15:53 | Vadim Voituk

В субботу, 11 ноября, мне представилась возможность посетить встречу Киевского “отделения” Java Users Group.
Спонсором мероприятия выступила компания Global Logic (если мне мне изменяет память, это та что была Bonus Technologies, что в свою очередь была частью Miratech).

Запланировано было 3 доклада:

1. JetBrains TeamCity , Дмитрий Жемеров
2. Web development in Python, Максим Ищенко
3. Intellij IDEA 6.0: new features, Дмитрий Жемеров

Первый – посвящен интересной Continuous Integration Tool от JetBrains – TeamCity.
Доклад был построен достаточно грамотно и интересно. Вопросов у слушателей почти не вызвал.
Второй – был призван донести до Java – сообщества существование такого языка как Python, а также его возможности для WEB-разработки.
Очень жаль, что ничего небыло сказано о Groovy или Jyton.
Третий доклад – о нововведениях в Intellij IDEA 6.0 – мне дослушать не удалось, да и ценность его для меня, использующего Eclipse, весьма сомнительна.

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

Apache/PHP VS Tomcat/Groovy

Рубрика: Development, Groovy, Java | 20 October 2006, 16:37 | Vadim Voituk

Дернуло меня на днях опять в J2EE нос сунуть.
Поставил на одном из серверов JDK 1.6-beta, развернул Tomcat, “прикрутил” к нему Groovy, указал стандартные JSP-taglibs, и для теста написал простенький сервлет, какой выводит User-Agent посетителя. Позже ещё и аналогичную JSP страницу.

Все бы хорошо, но почему-то визуально казалось что работает это все медленно, чего ввиду HotSpot-компиляции Java быть не должно. Решил проверить с помошью утилиты “ab” скорость обработки запросов полученого “J2EE-монстра” и сравнить с данными полученными от связки Apache/PHP/ZendOptimizer.

Запускал так:

ab -n 1000 -c 100 http://somehost.com/GroovyTest
ab -n 1000 -c 100 http://somehost.com/test.php

и фиксировал значение Request Per Second
В результате поулчились такие числа (request/sec.):

Apache/mod_php4/ZendOptimizer:
PHP-скрипт = 363, 380, 325, 349, 351
Статичный HTML = 365, 315, 420, 288, 320

Tomcat 5.5.20/Groovy 1.0.6/JDK 1.6
GroovyServlet = 1375, 889, 1203, 1367
Статичный HTML = 2070, 2155, 1865, 2105

В результате получается что Tomcat+Groovy на простеньких приложениях за секунду обрабатывает почти в 4 раза больше запросов чем Apache/mod_php4/ZendOpt.
На отдаче статичного html-контента это число вырастает ещё на 20%.
На таком же приложении, но с использованием MySQL (примитивный SELECT в базу), Tomcat+Groovy проигрывают в производительности на 10%.
Скорее всего это связано с довольно низкой производительностью JDBC.

Продолжение читайте тут.

Страница 6 из 6123456