Обновить
390.1

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Почему JBoss AS 7 такой быстрый?

Время на прочтение3 мин
Охват и читатели12K
Перевод. Оригинал статьи http://in.relation.to/Bloggers/WhyIsJBossAS7SoFast. Статье скоро год, но вопрос все еще актуален.

Если кратко, то ответ следующий: потому что вся проектировка JBoss AS 7 строится на основе закона Эмдейла (эффективная параллелизация задач) в противоположность закону Мура (ждать железа с большей частотой процессора). Почти каждый процессор на вооружении настольных компьютеров, ноутбуков и серверов сегодня имеет не менее двух ядер, при чем тенденция быстро растет. Дни гонок за частотой процессора уже в прошлом. Так что, программам приходится адаптироваться, чтобы выжать все из того железа, что есть сейчас и будет завтра.
Читать дальше →

Продвижение Java-стартапов

Время на прочтение1 мин
Охват и читатели2.3K
На сайте DZone собираются публиковать серию интервью о Java-стартапах.

image

Вот письмо одного из редакторов сайта:

Java-Стартапы - Мы хотим услышать о Вас!

Сейчас все помешаны на культуре стартапов которая стала модной в индустрии разработки ПО. Стартап Draw Something покупают за $ 200 млн, Facebook покупает Instagram за $ 1 млрд, постоянно происходит что-то новое. Но мы не видим, на каких технологиях базируются эти проекты. В ближайшее время будут опубликовано несколько интервью освещающих эту сторону стартапов.

Читать дальше →

Магический Репозиторий: интеграция Spring Data-JPA и Google Guice

Время на прочтение3 мин
Охват и читатели4K
Не так давно на Хабре был хороший пост посвященный проекту Spring Data-JPA.
Проект меня очень впечатлил, т.к. он предлагал хорошо продуманное решение для работы с репозиториями.
Собственные наработки на эту тему у нас имелись, однако Spring Data-JPA был намного более элегантным и функциональным решением.
Была одна загвоздка — проекты с которыми я работаю построены с применением Google Guice.
В свое время это был мой осознанный выбор и в целом он до сих пор устраивает как команды проектов, так и заказчиков.

… но концепция репозиториев от Spring Data-JPA была слишком вкусной…
Читать дальше →

Вышел Kotlin версии M1 (0.1.2090)

Время на прочтение1 мин
Охват и читатели1.5K
Сегодня выпущен первый официальный «milestone» проекта Kotlin — современного языка программирования дла платформы Java, разработанного в компании JetBrains:

Самые интересные изменения:
Читать дальше →

Определяем все классы, которые использует приложение на Java

Время на прочтение12 мин
Охват и читатели19K
Без сомнения каждый, кто в своем резюме указывает опыт разработки на Java, хоть раз в жизни писал строки
public static void main(String[] args)
компилировал их и запускал на выполнение командой наподобие java HelloWorld.
Но многие ли знают, что происходит внутри JVM от момента выполнения этой команды до того как управление передается методу main, как Java находит и загружает необходимые пользователю классы? Возникшая однажды производственная задача заставила автора разобраться в этом вопросе. Результаты изысканий под катом. Сразу стоит оговориться, что статья не претендует на полноту охвата всех существующих JVM, тестирование проводилось только на Sun HotSpot JVM.
Читать дальше →

Пишем первый проект на Play Framework 2.0

Время на прочтение6 мин
Охват и читатели40K
13 марта состоялся релиз второй версии scala/java-фреймворка Play. На хабре уже был обзор новых фич Play 2.0. В этой же статье я хочу восполнить пробел в отсутствии мануалов на русском языке по этому интересному фреймворку на примере создания простого приложения на Java, состоящего из списка категорий и привязанных к ним вакансий.

Статья рассчитана на тех, кто совсем не знаком с Play и хотел бы его «пощупать», не тратя много времени.
Читать дальше →

JavaFX Scene Builder Developer Preview

Время на прочтение2 мин
Охват и читатели17K
На сайте Oracle стала доступна для скачивания предварительная версия JavaFX Scene Builder:

image

Редактор предназначен для мышкоредактирования формочек под JavaFX. Рассмотрим что в нём есть:
Читать дальше →

Ускоряем процесс сборки с maven

Время на прочтение3 мин
Охват и читатели11K
Наверное многие из Вас работают с Maven. Если так, то полагаю каждый из Вас ежедневно собирает свой проект по несколько раз, особенно если Вы сейчас в активной фазе разработки и изменения затрагивают много модулей. В определенный момент времени проект становится довольно большим и билд с каждым днем начинает выполнятся все дольше и дольше… И вот приходит время, когда пора что-то с этим делать.

Мигрируйте с Maven 2 на Maven 3

Вы еще используете maven2? Странно. Одна только миграция на 3-ю версию может значительно ускорить процесс сборки. В моем проекте переход на Maven 3 дал прирост в скорости сборки на 10%. Вероятней всего за счет каких-то фиксов и оптимизаций, что были сделаны в новой версии (так как заявляют разработчики количество кода было существенно уменьшено и сильно отрефакторено). Миграция займет у Вас несколько минут и в большинстве случаев будет безболезненной. Хотя есть шанс, что некоторые конфигурационные файлы все же придется подправить.

Используем ядра и дополнительные потоки

В Maven 3 есть замечательная опция:
mvn -T 4 clean intall
mvn -T 2C clean install

В первом случае мы явно указываем, что хотим запустить процесс сборки на 4 потока. Во втором случае мы указываем, что на каждое ядро должно быть выделено по 2 потока для процесса сборки. Это одна из новых фич нового мавена — Parallel Builds. Эта фича анализирует граф зависимостей Вашего проекта
и распихивает модули по разным потокам, сборка которых может быть выполнена параллельно.
Для моего текущего проекта скорость сборки со вторым параметром (-T 2C) ускорилась на 20%. Правда тут есть один минус. Количество ресурсов, что будет потребляться для билда может значительно вырасти. В моем случае это +30% к потребляемой памяти.
Хочу сразу обратить внимание — если связанность модулей в Вашем проекте очень низкая — то
скорость сборки этой опцией можно увеличить на порядок.
Это, кстати, повод задуматься об Вашей архитектуре проекта. Ведь если билд занимает довольно много времени, то небольшой рефакторинг поможет уменьшить эту цифру. Хотя, конечно, это все очень индивидуально.
Вообще разработчики заявляют, что прирост в скорости сборки может быть 20-50%.
Читать дальше →

Cofoja: Практичная библиотека для контрактного программирования. Часть 1

Время на прочтение11 мин
Охват и читатели2.8K
Данная статья является переводом документа «2010 internship technical report» библиотеки Cofoja. Документ раскрывает причины возникновения библиотеки и отвечает на вопросы критиков, которые можно встретить на Хабре в статьях посвященных данной библиотеки. Статья служит для распространения и понимании реализаций парадигмы Design By Contracts или Контрактного Программирования.
Читать дальше →

Flyway: управление миграциями баз данных

Время на прочтение6 мин
Охват и читатели78K
В этой статье я расскажу об одном из средств обеспечения версионности схем и управления миграциями БД — библиотеке Flyway. С поблемой версионности схемы базы данных рано или поздно приходится сталкиваться разработчикам любого приложения, опирающегося на СУБД. Увы, иногда эта проблема принимается в рассмотрение слишком поздно — например, если вопрос о внесении изменений в структуру базы встаёт, когда приложение уже находится в эксплуатации. Но и на этапе разработки контроль схемы базы данных причиняет не меньше проблем, чем все прочие аспекты версионности приложения: в отсутствие чёткой системы управления миграциями локальная, стендовая и эксплуатационная базы могут быстро «разъехаться», не предоставляя при этом никакой информации относительно своего текущего состояния.

Читать дальше →

Обновление IntelliJ IDEA 11.1

Время на прочтение2 мин
Охват и читатели15K
image

Вчера на сайте JetBrains стала доступна для скачивания новая версия среды разработки на Java – IntelliJ IDEA 11.1.

Как всегда IntelliJ IDEA доступна в двух версиях: Ultimate – полная платная версия, а также Community Edition – бесплатная Open-source версия. Владельцы лицензии IntelliJ IDEA 11 Ultimate имеют возможность бесплатного обновления до 11.1.

Попробуем ознакомиться с тем, что нас ждет в новой версии продукта.
Читать дальше →

Вышла новая версия Apache POI 3.8

Время на прочтение5 мин
Охват и читатели32K
26 Марта вышел новый релиз библиотеки Apache POI — версии 3.8.

Apache POI — это библиотека на языке Java для чтения и записи документов Microsoft Office,
таких как Excel, PowerPoint и Word. С помощью POI вы можете программно создавать новые
или изменять существующие документы, индексировать текст, обрабатывать вложенные
(embedded) объекты (документы, картинки и т.д.) и много чего другого.

Предыдущая стабильная версия Apache POI вышла полтора года назад, в Октябре 2010 года,
поэтому изменений накопилось порядочно. Исправлено более 200 багов, добавлены многочисленные
новые фичи и улучшена общая производительность.

Читать дальше →

Ближайшие события

Среды разработки на Java, или от Netbeans к Eclipse

Время на прочтение2 мин
Охват и читатели75K
В одной из крупных гос. компаний ведем небольшим коллективом разработку САПР на платформе Java
Проекту уже полтора года.
До недавнего времени все дружно использовали IDE Netbeans. Периодически радовались новым версиям среды.
И вот ваш покорный слуга увидел релиз Netbeans 7.1. Захотелось попробовать, посмотреть новинку.
Сначала обновил себе (Slackware Linux 12.2). Запустил, открыл проект, собрал (скомпилировал).
Все прошло нормально. Посоветовал коллеге (Windows 7), сам продолжил работу в новой версии.

Тут началось невообразимое. Сборка проекта прошла нормально, а при его выполнении появились странные Exception-s. При щелчке на Exception редактор Netbeans открыл пустое место в коде, где был вообще комментарий, а не какой-либо метод.
При этом сборка того-же проекта вручную с помощью Ant и последующий запуск из командной строки дали абсолютно корректный результат.

Был сделан вывод, что Netbeans 7.1 запускает какой-то собственный кэш, а не только что скомпилированные Java-классы!
Читать дальше →

Исследование платформ для сервера minecraft. Создание собственного сервера Minecraft

Время на прочтение13 мин
Охват и читатели37K

Содержание


1. Содержание
2. Цели и задачи
3. Выбор платформы для сервера
4. Описание проекта
5. Выводы и перспективы
6. Инструкция для пользователей
7. Список литературы

Цели и задачи


Цель
Создать популярный игровой сервер для игровой программы minecraft.
Читать дальше →

Обзор новых возможностей в playframework v2

Время на прочтение4 мин
Охват и читатели5.8K
Доброго времени суток всем. Хотел бы представить вашему вниманию небольшое описание новых возможностей Play 2. Речь в данной статье пойдет о play2 scala.
Читать дальше →

Интеграция DBUnit и Spring TestContext Framework

Время на прочтение8 мин
Охват и читатели13K
С появлением в Spring 2.5 фреймворка TestContext интеграционное тестирование кода, работающего с базой данных, существенно упростилось. Появились аннотации для декларативного указания контекста, в котором должен выполняться тест, аннотации для управления транзакциями в рамках теста, а также базовые классы тестов для JUnit и TestNG. В этой статье я опишу вариант интеграции фреймворка TestContext с DBUnit, позволяющим инициализировать базу данных и сверить её состояние с ожидаемым по окончании выполнения теста.
Читать дальше →

Обзор Typesafe Stack 2.0 и введение в модель акторов на примере Akka 2.0

Время на прочтение7 мин
Охват и читатели14K
image

Typesafe Stack — современная программная платформа, которая обеспечивает возможность создания легко масштабируемых программных систем на Java и Scala. Стек функционирует на JVM, включает в себя фрэймворки Akka 2.0 и Playframework 2.0. Ядром платформы, которое обеспечивает практически неограниченную масштабируемость разрабатываемой системы, является библиотека Akka, реализующая многозадачность на основе модели акторов.
Читать дальше →

Проблемы передачи utf-8 из формы в JAX-RS (REST)

Время на прочтение3 мин
Охват и читатели23K

Введение


Для передачи данных от интерфейса веб-приложения есть несколько методов, но, пожалуй, самый распространенный — отправка формы с MIME-type application/x-www-form-urlencoded. Ещё один вариант — multipart/form-data.

В качестве серверной технологии для приема могут использоваться контроллеры в MVC-фреймворках (из основных Java-технологий следует упомянуть Spring MVC, Java Server Pages, Java Server Faces. Но эти фреймворки довольно сильно осложняют жизнь разработчику интерфейса, если он не знаком с Java или нужен шаг в сторону от того, что позволяет фреймворк. В случае же экспонирования REST-интерфейса бэкендом приложения разработкой фронта упрощается: ей может заниматься человек, знающий базовый javascript и jquery, независимый от разработки бэка. Кроме того, даже при использовании шаблонизатора, выбор сильно расширяется: Apache Velocity, FreeMarker (стоит упомянуть, что Spirng MVC неплохо интегрируется с последними). Тогда данные из формы на стороне сервера записываются в бины, с которыми связан данный view/controller. Правда, у JSF тоже наблюдалась генетическая проблема с кодировками, рассмотрение которой — тема для отдельной статьи.

Краткое введение в JAX-RS было дано в предыдущей статье. И экспонированный через JAX-RS интерфейс может принимать GET и POST запросы с данными форм. О проблемах данного подхода при использовании не-latin-1 и пойдет речь в данной статье.
Читать дальше →

Пишем кеш с определенным временем хранения объектов с использованием java.util.concurrent

Время на прочтение4 мин
Охват и читатели24K
Не так давно, мне выпала задача, написать кеш, который сам себя чистит по истечению некоторого определенного времени. Требования к нему были следующие:
  1. Легковесность
  2. Потокобезобасность

В общем-то и все. До написания данной задачи с java.util.concurrent дела не имел. На мысль использования этого пакета меня натолкнул один мой коллега, у которого было нечто подобное, но не соответствовало тому функционалу который был нужен. Итак, начнем:

В качестве ключа будет выступать внутренний класс, который помимо прямого назначения будет определять он является «живым» или его можно удалить с кеша, так как время его существования подошло к концу:
Читать дальше →