Java + Groovy on Google App Engine

Рубрика: Development, Google, Groovy, Java | 8 April 2009, 08:30 | Vadim Voituk

Вот и свершилось то, чего так долго ждали и просили большевики прогрессивные ИТ-гики – Google добавляет поддержку Java (а вместе с ней и Groovy) в Google App Engine.

Как сообщает в корпоративном блоге SpringSource Guillaume Laforge (project-manager проекта Groovy), последние несколько недель они работали совместно с командой Google App Engine над “правильным” запуском Groovy на GAE.

Совмесная работа вылилась в набор дополнений в реализацию security-модели Groovy.

Небольшая заметка о том, как запустить Groovy приложение в среде Google App Engine от того же Guillaume Laforge.

P.S. Что-то мне подсказывает что теперь GAE перестанет быть игрушкой для питонистов, а станет упрощенной версией Amazon AWS, тем самым накорню убив остальные Java in Cloud – сервисы а-ля Stax.

Java in a Cloud

Рубрика: Development, Google, Groovy, Java | 26 December 2008, 15:49 | Vadim Voituk

Пока прогрессивное мировое ИТ-сообщество самозабвенно обсуждает особенности трендового термина cloud-computing, массово уговаривает Google сделать поддержку Java&Groovy в Google App Engine, гадает будет или не будет в GAE поддержка Perl-а, небольшая компания из Вашингтона представила миру свое понимание cloud-computing в Java-мире.

Речь идет о компании Stax Networks, 16 декабря уходящего года запустившей под лозунгом “Java applications in the cloud” свой аналог Google App Engine для Java-разработчиков, который предоставляет завершенную инфраструктуру для разработки, тестирования и развертывания масштабируемых Java WEB-приложений.

Технически решение Stax построено поверх Amazon EC2 и позволяет создавать приложения основанные Servlets/JSP, Struts, GWT, Wicket, JRuby, Jython, Flex, ColdFusion.
В качестве СУБД в данный момент поддерживается только MySQL.

Инфраструктура Stax построена так, чтоб разработчику на этапе написания кода не нужно было думать о том, что находится на уроверь ниже чем Stax.
Управление приложениями и базами данных производится через удобную web-консоль, а локальная разработка и отладка производится привычными методами (я использовал для этого Eclipse и консольную утилиту stax).

Чем ещё интересен данный стартап – так это то, что в данный момент они не взымают плату за использование, аргументируя это тем, что вырабатываю правильную бизнесс-модель.
В итоге попробовать Stax в действии, в отличии от аналогов, можно абсолютно бесплатно и даже не имея кредитной карты.

Что я собственно уже и сделал: написал небольшое приложение, которое выводит список контактов из БД и запустил его в cloud-е на 2х серверах.
Под заголовком “Running Java in Cloud” можно увидеть IP и имя сервера в cloud-e, который обслуживает текущий запрос. И если понажимать F5 – можно заметить, что серверов всего-то 2.

В принципе идея предоставления Platform-as-a-Service (PaaS) далеко не новая, но более или менее популярных решений для Java мне пока не встречалось.

Аналогичные разработки:

  • Google App Engine (GAE) – самый известный из подобных app-хостингов.
    Пока поддерживает только Python и хранение данных в нереляционной БД Google BigTable.
  • Microsoft Azure – аналогичный GAE сервис от Microsoft. Поддерживает .NET языки.
  • Salesforce.com – CRM-хостинг для приложений написанных на проприетарном языке Apex
  • Heroku – аналог Stax, построенный на Amazon EC2, но для RubyOnRails приложений
  • 10Gen – ещё одна платформа, поддерживающая Python, Ruby и ServerSide JavaScript, а также обьекную СУБД Mongo.

P.S. В комплекте со Stax SDK идет Groovy древней версии 1.5.6

SpringSource покупает G2One

Рубрика: Development, Groovy, Java | 11 November 2008, 12:46 | Vadim Voituk

Всего пол-часа назад прочел в твиттере Guillaume Laforge (project-manager проекта Groovy), что компания SpringSource, разработчик популярнейших Java-фреймворков, купила компанию G2One, которая занимается разработкой, поддержкой и консалтингом в области Groovy/Grails.

Сумма сделки не расглашается.

Что же касается пользы от сделки для обеих сторон, то тут, думаю сомнений не возникает:
G2One под крылом у “старшего брата” получает серьезную поддержку и немалое внимание на рынке JEE.
SpringSource же при этом получает отличную разработку для небольших приложений, тем самым покрывая своими продуктами весь JEE-рынок, а также достаточно внушительное комьюнити.

На мой взгляд весьма интересно то, что компания G2One была создана всего-то год назад (почти день-в-день).  А сам факт осуществления подобного приобритения – очереденой неслабый толчек для Groovy/Grails на пути к Java Enterprise среде.

Текст анонса, там же ссылки на пресс-релиз, краткое FAQ, и анонсы в блогах CTO G2One и CTO Spring Source

P.S. Кстати в Spring Framework Groovy поддерживался ещё с незапамятных времен :)

Groovy cheatsheet

Рубрика: Groovy | 9 October 2008, 14:13 | Vadim Voituk

DZone в своем refcards-разделе опубликовал небольшой (всего 7 страниц) CheatSheet по Groovy.

Составителем шпаргалки выступил автор “Groovy in Action” Dierk König.

Внутри краткая напоминалка по таким темам:

  • Groovy / Java – интеграция
  • Языковые конструкции
  • Операторы
  • Простые и комплексные типы данных
  • Замыкания
  • GDK
  • Мета-программирование
  • Hot tips

Скачать можно здесь, или же по подписке на Refcardz.DZone.com

Grails: Первая русская ласточка

Рубрика: Groovy | 6 October 2008, 15:27 | Vadim Voituk

Вот и дождались – первый публичный проект в Рунете написанный на Grails.

Встречайте http://g2b.perm.ru/ – выглядит довольно таки современно и красиво, работает достаточно быстро.
Конечно хотелось-бы в админку заглянуть, но видно не судьба.

Подробнее тут http://community.livejournal.com/ru_grails/5391.html

Groovy @Bindable and @Vetoable annotations

Рубрика: Groovy | 2 July 2008, 22:48 | Vadim Voituk

Начиная с первых “бэт” версии 1.6 в Groovy были добавлены 2 встроенные аннотации (да-да! Groovy наконец-то полностью поддержирживает все возможности Java5!) : groovy.beans.Bindable и groovy.beans.Vetoable

Обе аннотации содержат в себе функионал который призван заменить стандартные Java-интерфейсы java.beans.PropertyChangeListener и java.beans.VetoableChangeListener и избавить разработчика от обилия классов-слушателей (listeners) и декларации дополнительных интерфейсов для бина.

Об этих нововведениях и их назначении было напечатано/перепечатано в каждом обзоре новых “фич” версии 1.6, но при этом нигде не встречалось описания как же все-таки “повесить” свой обработчик событий (listener).

Немного поковырявшись в исходниках Groovy удалось узнать такое: [Далее...]

Grails at LinkedIn

Рубрика: Development, Groovy, LinkedIn | 12 June 2008, 18:03 | Vadim Voituk

Когда-то, во время моего доклада на киевской встрече developers.org.ua, кто-то (кажется Алексей Колупаев) спросил где на реальных действующих проектах используется Groovy и Grails.
Первое, что я ответил – это LinkedIn. Но вот конкретнее рассказать, где там Grails а где Java, в силу непричастности к разработке этой соц-сети – не смог.

Теперь же инженеры LinkedIn сами поведали нам “где”, “как” и главное “зачем” у них используется Grails. Смотрим презентацию: [Далее...]

Groovy Classpath & Dynamic class loading

Рубрика: Development, Groovy | 4 June 2008, 11:55 | Vadim Voituk

В Groovy подключить дополнительные Java-библиотеки и классы можно 3-мя способами:

  1. Дописыванием пути к jar-у или директории с классами в глобальную переменную CLASSPATH
  2. Указанием значение параметра -classpath (он же -cp) при запуске groovy, groovysh, и тд.
  3. Размещением необходимых jar-ов в директории ~/.groovy/lib

При разработке небольшой утилиты парсинга и анализа лог-файлов мне необходимо было выбирать нужный jar-файл в зависимости от некоторых условий.
Потому ни один из приведенных способов мне не подошел.
К тому же мне необходимо было искать jar-файлы в директории, в которой находился сам скрипт, в то время как запускаться он мог из любой директории.

Вспомнив про черновик заметки о ClassLoader-ах, которую Юра все никак не соберется дописать и опубликовать,  получилось что-то вроде:

Простой прием, демонстрирующий определение местополжения класса и загрузку дополнительных JAR-ов

[java]

def codebase = this.getClass().getProtectionDomain().getCodeSource().getLocation()
def f = new File(codebase as String)

def url = new URL(f.getParent()+"/commons-lang-2.3.jar")

this.getClass().getClassLoader().getRootLoader().addURL(url)

Class au = Class.forName("org.apache.commons.lang.StringUtils")

assert au.isEmpty(null) && au.isEmpty("")

[/java]

P.S. Кстати запускать groovy-скрипт в UNIX-среде можно точно так же, как и sh, perl, php, python скрипты – указанием в первой строке:
#!/usr/bin/env groovy

Заметил за собой…

Рубрика: Groovy | 29 May 2008, 11:40 | Vadim Voituk

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

Т.е. если раньше писал что-то вроде:
$ php -r 'echo strlen("0bed4ce7b082e0f1ca05")."\n";'

или

echo "0bed4ce7b082e0f1ca05" | wc -c

то теперь первое, что приходит в голову, это:

groovy -e 'println "0bed4ce7b082e0f1ca05".size()'

P.S. Пример, конечно же, получился не очень показательный, но жизненный – проверял длину идентификатора для выделения для него поля в БД.

P.S.S. Это только у меня echo "0bed4ce7b082e0f1ca05" | wc -c выдает 21, в то время как PHP и Groovy – 20?

Groovy: Comparator closure & currying

Рубрика: Development, Groovy | 12 May 2008, 22:41 | Vadim Voituk

Есть в Groovy такая возможность, как currying (каррирование что-ли?) замыканий.
Само понятие прийшло из функционального программирования и означает преобразование функции с один количеством агрументов, в функцию меньшего количества путем “фиксации” значений некоторых аргументов.
Например есть функция f(x,y,z), тогда её каррированием по фиксированному значению арргумента x=10 будет функция Λ(f)=f(10, y, z).
Термин currying прозшел от имени известного математика Хаскеля Карри, и ещё иногда называется  Шейнфинкелизацией (от имени Украинского математика Моисея Шейфинкля, который изобрел это понятие)

Покажу небольшой пример того, как можно использовать каррирование замыканий в Groovy. [Далее...]

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