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 поддерживался ещё с незапамятных времен :)

Synth’етичекская заметка.

Рубрика: Java | 23 October 2008, 16:55 | juriy

Новый Look And Feel – Synth – появился в Java 5, но не был особо заметен до появления живых доказательств его работоспособности, вроде Nimbus. Основная тому причина: Synth сам по себе не является Look And Feel’ом, но предоставляет достаточно удобный API для разработки laf.

Вот как красочно описали Synth в одной из заметок на ibm.com:

The goal for Synth is simple — let developers create a new look and feel without writing one line of Java code.

Не верьте ни слову – создать приличную “шкурку” для вашей программы без Java кода не выйдет. Да и груды заметок о том, какой Synth простой – скорее преувеличение. Synth не простой. Но создать LaF на основе Synth существенно проще, чем создать LaF на основе, к примеру, BasicLookAndFeel или Metal.
[Далее...]

Java 6 update 10 is out

Рубрика: Java | 16 October 2008, 10:08 | juriy

Без особого шума Sun выпустила в свет Java 6 update 10. Он просто появился на странице download на java.sun.com.

Update 10 включает в себя массу долгожданных нововведений.

Java Kernel – пользователю не нужно будет скачивать весь JRE для того, чтобы запустить Java приложение. Достаточно скачать Kernel – всего около 4Mb, дополнительные компоненты по мере необходимости будут скачиваться в фоновом режиме.

Java Plug-in: добавлена возможность указывать настройки памяти и аргументы запуска VM отдельно для каждого апплета (ну неуж-то можно будет и в апплете проинициализировать OpenGL pipeline?!).

О Java Deployment Toolkit мы уже писали. Вкратце: это JavaScript, который умеет определять версию JRE, установленную у пользователя и при необходимости обновлять её.

Нововведение, которое лично я очень хотел увидеть – возможность создавать окна неправильной формы и полупрозрачные окна. Для Rich Client’ов незаменимая вещь, которой очень нехватало.

Добавлен новый Look and Feel – Nimbus, который создан на базе Synth автором Filthy Rich Clients.

Download page:
http://java.sun.com/javase/downloads/index.jsp

Более подробный обзор Java 6 update 10:
http://java.sun.com/developer/technicalArticles/javase/java6u10/

Bubble effect

Рубрика: Java | 24 September 2008, 15:56 | juriy

Когда пишешь приложение, хочется чтобы пользователь получал удовольствие от работы с ним. Пользователь любит, когда приложение ведет себя предсказуемо и естественно. Недавно, в одном из моих хобби-проектов возникла задача сменить в форме один компонент на другой. В Swing это делается совсем просто, главное не забыть вызвать revalidate, а то эффекты, порой, весьма забавные. Решение “в лоб” выйдет визуально не очень приятным. Один компонент резко уходит вникуда, второй так же резко появляется из неоткуда. Никакой визуальной связи между ними нет. Это поведение неестественно, и таких эффектов в Rich приложениях лучше избегать.

Вот относительно несложное, но более интересное решение той же задачи.

web-start
[Далее...]

Костыли для апплетов

Рубрика: Java, JavaScript/Ajax | 9 September 2008, 09:54 | juriy

Вам приходилось слышать в адрес апплетов выражение: “dead man walking”? Апплеты – часть Java платформы, задуманная, как мощнейшее средство, позволяющее проинтегрировать Java прямо в web страницу, практически полностью теряющее свои достоинства из-за тонн ограничений, которые на них возложены.
Последние несколько дней я бился над вопросом: как заставить апплет “выглянуть в мир”, за параноидальным прокси моего офиса.
[Далее...]

Sendfile on Tomcat, Apache, Nginx

Рубрика: Development, Java | 4 September 2008, 14:53 | Vadim Voituk

Наверное все, кто хоть когда-либо использовал web-сервер nginx, знают о такой его возможности как “X-Accel-Redirect”.
Для тех кто не знает / не помнит – напомню. 

Суть состоит в том, что при необходимости отдать клиенту файл посредством своего скрипта, можно не писать код, который будет читать байтики из файла и писать их в сокет, а отправить специальный response header, получив который nginx сам начнет отправку файла.
Например на PHP это выглядит так:

header("X-Accel-Redirect: /protected/iso.img");

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

Собсно как подобное реализуется на nginx – написано парой строчек выше.
Если что не очень ясно – Google в помощь.

Не так давно узнал даже как реализовать описанное и в старом-добром Apache.
Для этого нужно установить дополнительный модуль mod_xsendfile, активировать, ну а дальше все аналогично nginx, только c отличным именем response header:

X-Sendfile: /path/to/file

Есть только одно НО в этом способе – я его ещё не пробовал :)
Если кто имеет опыт работы с этим модулем – дайте знать, хочется услышать отзывы и мнения :)

А недавно пришлось реализовать отдачу достаточно тяжеловесного контента на Tomcat, и захотелось чего-то подобного.

Путем недолгого гугления было найдено такое решение:

В первую очередь необходимо активировать NIO connector в настройках сервера
(документация говорит что можно и APR, но я не пробовал)

Для этого в conf/server.xml вместо стандартного

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
    redirectPort="8443" />

Пишем

<Connector port="8180" protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectPort="8443" />

После этого проверяем поддержку sendfile наличием аттрибута
org.apache.tomcat.sendfile.support в request-е сервлета

Если значение установлено в false – то в Connector-е дописываем useSendfile="true"

Код отправки файла клиенту выглядит так:


if (request.getAttribute("org.apache.tomcat.sendfile.support")==Boolean.TRUE){
  File f = new File(cont.getRealPath("/3499.3gp"));

  long start = 0L;
  long end = f.length();

  request.setAttribute("org.apache.tomcat.sendfile.filename", f.getCanonicalPath());
  request.setAttribute("org.apache.tomcat.sendfile.start", start);
  request.setAttribute("org.apache.tomcat.sendfile.end", end);
  request.setAttribute("org.apache.tomcat.sendfile.token", this);

  response.setContentLength(new Long(end).intValue());
}

Немного отличается от того, как это выглядит в nginx и apache, но ничто не мешает вынести эту логику в фильтр, который будет срабатывать при наличии соответствующего HTTP заголовка в response-e

Swing focus

Рубрика: Java | 28 August 2008, 13:24 | juriy

Небольшой рецепт для авторов собственных Swing компонентов.

Свои компоненты, как правило, наследуются непосредственно от JComponent. Самый простой компонент выглядит так:

JComponent comp = new JComponent(){};

Немного усложним задачу: предположим, нам нужно создать компонент, который должен получать уведомления о событиях клавиатуры. Нет ничего проще: в JComponent’е есть метод addKeyListener, который позволяет реализовать этот функционал:
[Далее...]

Безопасность в Java

Рубрика: Java | 18 August 2008, 10:48 | juriy

Безопасность в Java это один из “козырей” платформы. Контроль за исполняемым кодом с точки зрения доступа к ресурсам и действиям это одновременно высоко востребованная и достаточно сложная функциональность.

До последнего времени я не интересовался безопасностью. Я знал, в общих чертах, что могут а чего не могут апплет и мидлет, знал о том что есть “песочница” и что выходить за нее не стоит. И этого вполне хватало. Исследовать вопросы безопасности ближе меня побудило обсуждение моей заметки “Создание Pluggable решений на Java”. Ведь когда вы сами предоставляете среду для исполнения плагинов вы не можете игнорировать вопросы безопасности (конечно, кроме случаев, когда вы – единственный автор плагинов к своей-же системе). Последней каплей стала наглядная демонстрация того, как при помощи интроспекции плагин может получить доступ к объектам ядра приложения и выполнить с ними любое действие.

[Далее...]

Scala everywhere!

Рубрика: Development, Java | 24 July 2008, 20:16 | Vadim Voituk

За последнюю неделю-две встречал упоминания о языке программирования Scala большее количество раз, чем за весь  прошедший год.
Причем упоминания из источников, от которых, как говорится “не ждал, не ожидал”.

Для начала блог об изучении Scala (с классным headline: Learning Scala. The hard way), который ведут инженеры из Twitter. Потом вакансия от Яндекс.Видео.
Между ними массивный поток упоминаний и обсуждений в читаемых мною блогах.

Что это?

Новый прогрессивный тренд?

Мимолетный всплеск общественного  программерского интереса, основанный на ростущей популярности функциональных языков программирования?

Интереса ради: хотели бы вы писать код на функциональном, статически типизируемом языке для JVM? К тому же ещё не самом распостраненном и нифига не нишевом?

Just another Java interview questions

Рубрика: Java, Работа | 14 July 2008, 16:32 | Vadim Voituk

Разгребая и фильтруя древнюю почту, наткнулся на письмо содержащее несколько вопросиков, которые мне задавались на первой заочной стадии интервью на позицию Senior Java Developer (я там не сильно ещё надоел этими Java interview?).
Сразу хочу заметить что вопросов будет всего-то ничего, и заданы они были по е-майл и тем самым использовались как механизм базовой фильтрации кандидатов.
А вот в какую компанию было собеседование – хоть убей не помню, да и сейчас это уже не столь важно.

Task 1 – Literature
Tell us about your top three books that have made you a better software developer.

Task 2 – Monetary calculations
If you have $200 in your pocket, and you see a shelf with a long row of foobars priced at $1, $1.2, $1.44, $1.728 and so forth. Every foobar cost 20% more than the previous one. You buy one of each foobar, starting with the one that costs $1, until you can’t afford the next foobar on the self (the foobars are ordered by price). How many foobars can you buy, and how much change will you get? Your task is to write a small routine to solve this problem, and then demonstrate the correctness of your routine by writing a test for it.

Task 3 – Static factories
Give us at least two advantages with static factory methods compared to constructors, and at least one disadvantage.

Task 4 – Declarations
If you see this line in a method that you are going to modify: ArrayList testList = new ArrayList();
Is there anything that you would like change in this statement?

Task 5 – J2SE
Construct a list containing all weekdays for an arbitrary period in an arbitrary year. No saturdays nor sundays is supposed to be in this list. Write a class containing the methods that you need for constructing such a list. Take into account that the content in this list may be presented in more than one way.  You can assume that your class’ only task is to return this list.

Конечно же для полноценной оценки знаний и опыта кандидата этого совершенно не достаточно, но вполне хватит чтоб не тратить время на кандидатов близких к “абсолютному нулю”.
Принимайте на вооружение!

А как бы вы ответили на вопросы 1, 3 и 4?

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