Pull to refresh
  • by relevance
  • by date
  • by rating

Java.next: Общие принципы языков нового поколения

Website development *
Translation

Java.next: Общие принципы языков нового поколения


Это первая часть серии статей насчёт Java.next. В первой части я собираюсь рассмотреть общие принципы, которые разделяют языки Java.next.

Я выбрал четыре языка, которые вместе и назвал «Java.next»: Clojure, Groovy, JRuby, and Scala. На первый взгляд, эти языки совершенно разные. Clojure — это Lisp. Groovy — это «почти Java». JRuby обладает красотой Ruby, и использует мощь Rails. Scala, в отличие от других языков, настаивает на том, что нам нужна статическая типизация.
Читать дальше →
Total votes 60: ↑53.5 and ↓6.5 +47
Views 9K
Comments 133

Ruby is not Rails

Ruby *
Последнее время о Ruby начали думать только как о Ruby on Rails. Но в мире Ruby ещё много красивых и иногда уникальных вещей. Поэтому, в целях борьбы с предрассудками, хочу вкратце рассказать о отличных и необычных Ruby-проектах.

Читать дальше →
Total votes 71: ↑63 and ↓8 +55
Views 4.6K
Comments 30

Новая версия Ruby быстрее до 5 раз

Ruby *
Версия Ruby 1.9.1, которая сейчас в статусе «preview» в синтетических тестах существенно быстрее текущей версии 1.8.7. За исключением нескольких тестов, ускорение доходит до 5 раз.

JRuby 1.1.6RC1 так же показал себя хорошо, выполнив тесты быстрее Ruby 1.8.7 до 3,6 раз.

Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Views 1.1K
Comments 50

JavaOne 2009, конференция

Lumber room
С 1 по 5 июня в Сан Франциско проходила конференция JavaOne.

Удивительно, что на Хабре об этом ни слова! Возможно это потому, что за Джавой с точки зрения веб-разработчиков закрепились сервлеты и JSP (а может просто потому, что на хабре Java не очень популярна).

А ведь там было на что посмотреть, было что послушать, было с кем поговорить и было что потыкать! Ну и разумеется, памятные сумки, майки и кепки =)

А еще можно было посмотреть на живых создателей и разработчиков платформ, технологий и просто интересных людей, которые собственноручно внесли огромный вклад в эволюцию джавы, интернета и всего-всего.

Если вам это было бы интересно, вы все еще можете зацепить небольшой кусочек:
java.sun.com/javaone
и посмотреть видеозаписи с основных заседаний (http://java.sun.com/javaone/2009/general_sessions.jsp)

На конференции много говорили о
Cloud platforms (облаках и всем что с ними связано)
Free & open (опенсорсе)
Mobile development (мобильниках)
Operating systems and platforms (операционках)
RIA and scripting ( небедных интернет приложениях и скриптинге)
и о будущем джавы и ее последователях

О модности cloud платформ можно узнать именно на таких конференциях. «Облака», символизирующие что-то большое белое и пушистое, но не гигантскую крысу-альбиноса, на слуху почти везде. Концепция замены датацентров на гибкие cloud-решения обсуждаются как минимум в двух аудиториях. В этом секторе в основном доминируют
  • Amazon EC2 (их представителей не видел, хотя были другие ребята с Амазона)
  • Google Apps
  • Microsoft Azure
  • Sun Cloud Platform

Мне удалось побывать на одной лабе по Sun Cloud Storage, где можно было самолично написать небольшую прогу, которая оперирует с файлами на Sun Cloud Storage (к слову, с точки зрения API, совместимому с Amazon S3).

Что касается «облачных» преимуществ для разработки веб-сервисов и приложений, основной упор ставится на
  • гибкость (хочешь плюшку — возьми с полки),
  • масштабируемость (плюшки уменьшаются и увеличиваются в размерах по требованию)
  • и экономность (платите только за откушенную часть плюшки)


Как выяснилось, Джава идет на встречу и другим языкам программирования. Проект Da Vinci Machine позволил портировать другия языки программирования на платформу Java. Примечательно, что jRuby уступает по производительности лишь последней версии Ruby 1.9.

Кстати, если, как и я, считаете, что на Java нужно писать слишком много кода для выполения простых задач, попробуйте Groovy!

Ну а теперь самое интересное!

Если вы думаете, что под RIA платформами всегда будут подразумеваться Flash, Flex и Silverlight, а Java будет представлена лишь старыми «добрыми» апплетами, обломитесь! На этой конференции анонсировали релиз JavaFX 1.2.

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

Что такое JavaFX в двух словах без лишних терминов? Это платформа (язык + то, на чем она работает) с возможностью создания красивых графических приложений =) И поскольку он работает на той же JVM, можно использовать все доступные библиотеки Java. В итоге получается универсальная платформа для дестопов, веба, соток, блю-рей проигрывателей, двд-выигрывателей и всего, где есть JVM (надеюсь, в недалеком будущем)

По синтаксису JavaFX напоминает Java, ActionScript… и почему-то JSON (уж больно похож на него декларативный формат описания объектов)

На JavaFX можно создавать не только красочные цветастые интерактивные апплеты, но и совершенно безобразные и уродливые вещи, кои получились у меня в ходе лабы :D Ну, просто неудобно делать графические вещи без визуального редактора… зато межплатформенно…

Павильон
Ну и на последок, в огромном зале были размещены точки с представительствами самых разных именитых и не очень контор, названия которых я не помню, и возможно даже и не выговорю. Там тоже проводились небольшие семинарчики, демонстрации, розыгрыши и раздача халявы. У стенда JavaFX можно было поиграть в забавные игры на самых различных устройствах (перчатках-манипуляторах, сотках, блю-рейном проигрывателе).

Адоб демонстрировали PixelBender и взаимодествия Flex и BlazeDS с остальными. В другом отделе можно было попробовать установить openSolaris и получить фирменную майку и значок (пионерский подход). А в перерывах можно было поиграться в Quake и постучать на Rockband =D

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

//Что делает эта функция?
int ninja_loop (int num ) {
if (num & num-1 == 0) return 0;

for (int arc = 1; (num &= num-1); arc++) {
// ninjas loop differently
}

return arc;
}

// Достоверность не гарантирую, так что можете сильно не париться =))


Среди всех прочих был и стенд некой фирмы, которая занималась защитой ПО и прочего от копирования (DRM и прочие). Возле стенда дежурил пожилой мужичок, который явно скучал от одиночества.

Некоторые пророчат, что эта конференция была последней в связи с недавним приобретением компании Sun конторой Oracle, с чем многие выступавшие там не согласны. Но как бы то ни было, я надеюсь, что в следующем году будет JavaOne 2010 и у меня будет повод написать еще один пост.

P.S.: Удивительно, но больше половины людей на лабах сидели с маками о_О
Еще там были общедоступные терминалы, которые работали по карточкам. Из Sun Virtual Box'a на выбор можно было загружать openSolaris, Ubuntu 9.04 или Windows-7.
Total votes 24: ↑15 and ↓9 +6
Views 194
Comments 6

Jython vs Groovy vs JRuby vs …

Lumber room
Господа, внезапно — сабж!? Вопрос вызван тем, что какое-то довольно продолжительное время я был вдалеке от Java-технологий, писал на C++ и Python (и продолжаю писать), но один из курсов университета (конкретнее — component based software development) будет требовать либо одного из JVM-based языков (Java отпадает за неинтересностью) либо .NET языков (отпадает по определению так как Windows у меня нет и не будет). Немного изучив вопрос, пришел к выводу что:
  1. Преимущества в пользу Jython — по большому счету, это Python, который я хорошо знаю и люблю, с возможностью использовать Java классы. Но, если верить слухам, сейчас он почти не развивается. Хотя опять же, кому верить-то?
  2. Преимущества Groovy — новый язык, активно развивающийся, комбинирующий в себе достоинства многих языков и парадигм (тот же Python и Ruby в них входят). Недостатки — новый язык, активно развивающийся ;-) Сравнительно мало документации и кода по сравнению с Python
  3. Преимущества JRuby… я что-то весь в затруднениях, но все о нем говорят. Полная совместимость с Ruby, да. Но Руби я все равно не знаю, так что учить с нуля, так же как и Groovy.
А какие еще мнения есть? Я пока еще не совсем понял, что именно мне нужно для этого курса (хотя ясно, что это что-то должно поддерживать хорошую умную компонентную модель для работы в распределенных средах), но язык, в конце концов, вторичен — хочется чего-то интересного, нового и необычного (не сказать “странного”). Кто что думает? Вопрос довольно практический, потому что 18 января надо начинать писать курсовой проект на этом языке, который я выберу — а его надо еще и изучить хотя бы минимально до этого момента ;-)

Пока начал играться с Groovy и он мне, в принципе, нравится — но возможно, я упускаю что-то существенное, ограничивая себя этим языком?

Всем хабралюдям заранее спасибо за мнения!
Total votes 19: ↑14 and ↓5 +9
Views 1.2K
Comments 77

8 июня — встреча Java-разработчиков с участием Ренделла Томаса

Self Promo
8 июня в Минск приедет Randall Thomas – опытный разработчик, архитектор и директор по развитию компании EngineYard. Это, пожалуй, крупнейшая компания в мире, которая разрабатывает cloud-платформы для Ruby on Rails-приложений. Вы спросите, каким боком они имеют отношение к Java?.. Отвечаю: Рэнделл расскажет нам об open source-проекте JRuby — Java-имплементации языка Ruby. Первоначально JRuby разрабатывался в SUN Microsystems, после чего его разработчики перешли в EngineYard.

Фактически, JRuby прозволяет связать вместе два языка программирования: Java и Ruby. Рэнделл подробнее представит эту интересную технологию, а также выскажет свои мысли по поводу будущего Java. Warning! Не исключены горячие дискуссии!

Также на встрече выступит Сергей Бушик, который в своем докладе «Opening a fabulous world of Cassandra» расскажет о NoSQL-ных базах. Речь пойдет о концепции NoSQL и Cassandra, парадигме key-value, column-oriented системах, чтении и записи данных в Cassandra – connectivity, настройке производительности и конфигурации, интеграции Cassandra с Hadoop. Сергей – опытный специалист в области разработки web-ориентированных приложений и web-сервисов, архитектуре многоуровневых систем и дизайна, в частности он разрабатывал дизайн ряда проектов для Cassandra.

Вход на мероприятие бесплатный.
Необходима предварительная регистрация тут.
Начало мероприятия – 18.00
Регистрация участников на месте – с 17.30
Адрес: г.Минск, ул. Котовского 14, корпус 9, аудитория 9-12 (Минский Институт Управления).
Total votes 14: ↑14 and ↓0 +14
Views 383
Comments 10

Ускорение JRuby в три раза после установки JDK 7u2

Ruby *
Команда разработчиков JRuby настоятельно рекомендует всем установить последнюю версию OpenJDK 7u2 (OpenJDK 7 update 2), которая значительно доработана по сравнению с июльским релизом JDK 7 GA (General Availability). Среди прочего, сделана важная оптимизация в подсистеме invokedynamic. Поскольку JRuby 1.7 активно использует эту подсистему, то разработчики специально придерживали выпуск 1.7, дожидаясь этого апдейта. Собственно, официальный релиз 1.7 не произошёл до сих пор, но предварительную сборку для тестирования можно скачать здесь.

При использовании JRuby 1.6.x после апгрейда с Java 6 на Java 7 вы увидите прирост скорости JRuby-приложений примерно на 10-30%, а в случае с JRuby 1.7 — примерно в три раза!

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

Это ещё не всё. Для будущего OpenJDK 7u4 запланирован новый оптимизатор invokedynamic, и ребята из OpenJDK говорят о возможности ещё большего увеличения производительности.
Total votes 28: ↑26 and ↓2 +24
Views 1.1K
Comments 7

Сравнение производительности JRuby 1.7 на OpenJDK b147 и YARV 1.9.3p0

Ruby *
После вот этого поста, сообщающего о сногсшибательном увеличении производительности JRuby в версии 1.7 при работе на OpenJDK 7u2 в 3 раза относительно предыдущих релизов.

Припоминая относительную тормознутость и прожорливость JRuby в 2009м, и вот такую статистику от Programming languages shootout, я решил дать JRuby очередной шанс.

Сравнение не претендует ни на точность измерений, ни на всеобъемлемость тестов, а лишь призвано выяснить, догнал ли JRuby YARV по производительности, или нет. На старт, внимание,
...марш!
Total votes 16: ↑7 and ↓9 -2
Views 1.4K
Comments 8

Забег реализаций ruby '2012

Ruby *
Translation
Использовался набор бенчмарков из ruby-1.9.3-p125. Все тесты запускались на:

ОС: OSX Lion 10.7.3
Процессор: 2.3ГГц i5
Память: 8Гб 1333 MHz DDR3
SSD: OCZ Vertex 3 Max IOPS SATA III 2.5" 120Гб

Реализации:
— ruby 1.8.7p249 (системный ruby)
— ruby 1.9.3p125
— ruby 2.0.0dev (2012-02-25 trunk 34796)
— MacRuby 0.12 (ruby 1.9.2) (Nightly build)
— maglev 1.0.0 (ruby 1.8.7)
— rubinius 1.2.4 (1.8.7 release 2011-07-05 JI)
— rubinius 2.0.0dev (1.9.3 e22ed173 JI)
— jruby 1.7.0.dev (ruby-1.9.3-p28) (Java HotSpot(TM) 64-Bit Server VM 1.7.0_04-ea)
— jruby 1.6.7 (ruby-1.8.7-p357) (Java HotSpot(TM) 64-Bit Server VM 1.7.0_04-ea)
Читать дальше →
Total votes 33: ↑31 and ↓2 +29
Views 1.9K
Comments 19

Ruby NoName Podcast S04E07

Ruby *

Подкаст


http://ruby.rpod.ru/273046.html

Новости




Специальный гость


Леонид Никаноров



Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Views 570
Comments 5

Red Hat усиливает PaaS OpenShift разработчиками JRuby

Ruby *Java *Openshift *
Translation
В начале месяца появились новости о том, что Red Hat открыла код своей PaaS OpenShift. Те, кто следит за развитием этого проекта, наверное уже заметили, что в Red Hat уделяют OpenShift очень большое внимание. Помимо добавление нового функционала (из недавнего — поддержка Node.js) постоянно происходит и улучшение уже существующего. К последнему можно отнести и новость о переходе в Red Hat двух ключевых разработчиков JRuby.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views 1.1K
Comments 6

Ruby NoName Podcast S04E11

Ruby *

Подкаст


http://ruby.rpod.ru/277590.html

Новости




Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Views 642
Comments 7

Состоялся релиз RubyMine 5

JetBrains corporate blog Ruby *Ruby on Rails *Puppet *
Мы рады сообщить, что вчера вышла новая версия интегрированной среды разработки для Ruby и Rails — RubyMine 5, которую можно загрузить с нашего сайта.

В новой версии мы постарались добавить новые возможности, которые позволят получить удовольствие от разработки на Ruby во всем ее многообразии. Уже хорошо зарекомендовавшие себя инструменты разработки теперь доступны для еще большего числа Ruby-приложений, в том числе и для iOS-приложений на базе технологии RubyMotion, быстро набирающей популярность. Для приложений RubyMotion стали доступны интеллектуальное автодополнение кода, тестирование и отладка с использованием графического интерфейса.

Более подробно о RubyMine 5 можно узнать на странице What’s new. Также мы рады представить демо-видео от технического евангелиста Джона Линдквиста (John Lindquist).
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Views 9.3K
Comments 43

Используем потоки в Ruby

Ruby *
Tutorial
Многие Руби-разработчики игнорируют потоки (threads), хотя это очень полезный инструмент. В данной статье мы рассмотрим создание IO потоков в Руби и покажем как Руби справляется с потоками в которых происходит много вычислительных операций. Попробуем применить альтернативные имплементации Руби, а так же узнаем, каких результатов можно добиться при помощи модуля DRb. В конце статьи посмотрим, как эти принципы используются в различных серверах для приложений на Ruby on Rails.

IO потоки в Руби


Рассмотрим небольшой пример:

def call_remote(host)
  sleep 3 # симулируем долгий запрос к серверу
end

Если нам надо обратитьcя к двум серверам, например, чтобы очистить кэш, и мы дважды последовательно вызовем эту функцию:

call_remote 'host1/clear_caches'
call_remote 'host2/clear_caches'

то наша программа будет работать 6 секунд.

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

threads = []

['host1', 'host2'].each do |host|
  threads << Thread.new do
    call_remote "#{host}/clear_caches"
  end
end

threads.each(&:join)

Мы создали два потока, в каждом потоке обратились к своему серверу и командами #join сказали, что главной программе (главному потоку) надо подождать их завершения. Теперь наша программа успешно выполняется в два раза быстрее, за 3 секунды.
Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Views 25K
Comments 18

Конфигурирование через скрипты вместо XML и JSON на примере realtime multiplayer игры

Java *Groovy & Grails *Game development *


Shortcuts: github, tiles.js tiles.groovy tiles.ruby

Не секрет, что объектов в играх на порядок больше чем их возможных поведений. При прототипировании описания объектов можно составлять прямо в коде на Java, С++ или C#, но там всё довольно быстро запутается. Потом объекты выносят в базу данных, либо в XML или JSON конфиг. Это сильно помогает, ведь после редактирования конфигурации пересобирать код не требуется, и этим могут заниматься не только программисты, но и спецы по предмету (для игр это гейм-дизайнеры и контентщики). Когда разрастается команда либо количество объектов переходит какую-то черту, программисты пишут удобный редактор, который позволяет визуально править этот JSON-конфиг. В результате на выходе получается какой-то трудно поддерживаемый монстр.

Если вы не собираетесь нанимать множество людей которые вообще не умеют кодить, то можно попробовать пойти другим путём: описывать метаданные с помощью Domain Specific Language.
Секретный секрет
Total votes 35: ↑32 and ↓3 +29
Views 18K
Comments 15

Как работает GIL в Ruby. Часть 1

Ruby *Programming *Concurrent computing *
Translation
Пять из четырех разработчиков признают, что многопоточное программирование понять непросто.

Большую часть времени, что я провел в Ruby-сообществе, печально известная GIL оставалась для меня темной лошадкой. В этой статье я расскажу о том, как наконец познакомился с GIL поближе.

Первое, что я услышал о GIL, никак не было связано с тем, как она работает или для чего нужна. Все, что я услышал — что GIL — это плохо, поскольку ограничивает параллелизм, или то, что это хорошо, потому что делает код потокобезопасным. Пришло время, я приноровился к многопоточному программированию и понял, что на самом деле все сложнее.

Я хотел знать, как работает GIL с технической точки зрения. На GIL нет ни спецификации, ни документации. По сути, это особенность MRI (Matz's Ruby Implementation). Команда разработчиков MRI ничего не говорит по поводу того, как GIL работает и что гарантирует.

Впрочем, я забегаю вперед.
Читать дальше →
Total votes 43: ↑42 and ↓1 +41
Views 20K
Comments 38

Как работает GIL в Ruby. Часть 2

Ruby *Programming *Concurrent computing *
Translation
В прошлый раз я предложил заглянуть в код MRI, чтобы разобраться с реализацией GIL и ответить на оставшиеся вопросы. Что мы сегодня и сделаем.

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

В предыдущей серии


После первой части остались два вопроса:

  1. Делает ли GIL array << nil атомарной операцией?
  2. Делает ли GIL код на Ruby потокобезопасным?

На первый вопрос можно ответив, взглянув на реализацию, поэтому начнем с него.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Views 9.7K
Comments 3

Обновление timezone в logstash

System administration **nix *Server Administration *
Sandbox
Всем привет! Уже как пару месяцев наша компания успешно использует в продакшене связку logstash-elasticsearch-kibana для сбора и обработки достаточно большого объема логов. Заглянув в kibana после перевода часов обнаружилось, что все логи идут с отставанием по времени в 1 час. Под катом хочу поделиться решением проблемы с timezones в связке logstash-elasticsearch-kibana и готовой сборкой logstash с обновленными timezones.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views 6.6K
Comments 12
1