Обновить
149.63

Java *

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

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

Будущее построения архитектуры Java EE приложений становится яснее

Время на прочтение1 мин
Охват и читатели3.7K
Известный JavaEE архитектор-фрилансер недавно опубликовал свое видение будущего в построении архитектуры корпоративных приложений. Далее идет вольный перевод.

Java EE 6 и Spring 3 оказались очень похожи — как минимум архитектура и дизайн отличаются лишь в деталях. Не вижу отличий и в процессе разработки, где JPA и SessionBean-ы в Glassfish можно заменить технологиями Spring.

Spring также идет со своим сервером приложений, который с 7 октября 2008 является open source сервером с коммерческой поддержкой. Если вам понадобится получить патчи старых версий Spring — вам будет необходимо преобрести коммерческую поддержку от SpringSource/VMWare. Для серьезных проектов вы будете вынуждены преобрести два пакета поддержки — для сервера приложений от вендора и один от SpringSource, хотя этом случае одновременное использование Java EE 5/6 опровдать сложно. В перспективе я вижу два возможных варианта:
  • Развертывание Spring-а на проприетарный tc сервер
  • Развертывание Java EE 6 приложений без Spring-а
Обозначенная выше дилемма также справедлива и для проектов по миграции — стоит ли использовать стек Java EE, либо мигрировать на Spring. Это скорее стратегическая или политическая дилемма, нежели технологическая. Конечно, можно еще самостоятельно собирать и распространять Spring, однако такой подход недопустим в большинстве коммерческих проектов.

Я считаю, что будущее корпоративной Java очень чистое — мы полностью используем либо Spring, либо стек Java EE, но не эти технологии вместе.

См. также Oracle опубликовал планы развития Glassfish

Oracle опубликовал планы развития Glassfish

Время на прочтение2 мин
Охват и читатели2K
Oracle Glassfish roadmap

25 марта Oracle официально представил планы по развитию недавно преобретенного вместе с Sun Microsystems сервера приложений Glassfish. Самая важная новость — никаких изменений в работе сообщества над проектом не произойдет, Oracle заинтересован в дальнейшем развитии продукта.

Open source версия Glassfish остается, а в дополнение к ней Oracle будет поставлять свой Oracle GlassFish Server с преферансом и куртизанками со своей поддержкой, лицензированием и закрытыми дополнениями. Были опровергнуты утверждения о том, что прекратится поддержка кластеризации, проект станет закрытым для внешних разработчиков, Oracle не понимает Open source и т.д.

Планы по развитию затрагивают следующие аспекты: следующие релизы версий 2 и 3 через 100 дней (в основном интеграция с технологиями Oracle), векторы технологического развития Glassfish, интеграции с семейством Oracle Fusion Middleware, анонс версий 3 и 4.

Подробности...

Подсчёт времени выполнения метода через аннотацию

Время на прочтение8 мин
Охват и читатели21K
Во многих проектах требуется посчитать время, которое затратил тот или иной метод. Для этого можно вручную сохранять значение System.currentTimeMillis() и после метода вычислять затраченное время. Когда методов много это становится не очень удобным.
Поэтому я решил написать простенькую аннотацию, которая бы считала время выполнения метода. Попытавшись найти информацию в интернете, понял, что её по данной теме очень мало. Придётся как-то выкручиваться, собирая информацию по крупицам.
Читать дальше →

Java EE 6. Обзор JPA 2.0, часть 2: Коллекции

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


image

Продолжение серии. Ранее: Java EE 6. Обзор JPA 2.0, часть 1: Введение. В данной статье я продолжаю рассматривать изменения в JPA.

Встроенные коллекции

Введенный в JPA 2.0 компонент ElementCollection позволяет задавать политики отображения для необычных в JPA 1.0 видов коллекций: коллекций embeddable объектов, либо коллекций «простых» типов (Integer, String и т.д.). Также это компонент используется при в определениях отношений с Map, в роли ключа которого выступают любого рода объекты, а в роли значения — embeddable или «простые» объекты.

Значения ElementCollection всегда хранятся в отдельных таблицах, которые задаются аннотацией @CollectionTable. CollectionTable отпределяет имя таблицы и @JoinColumn или @JoinColumns в случае составного первичного ключа.
Читать дальше →

Java EE 6. Обзор JPA 2.0, часть 1: Введение

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

Пожалуй, наибольшее количество изменений с выходом спецификации Java EE 6 было привнесено в JPA (Java Persistence API). В серии статей, начиная с этой, я планирую рассказать подбробно о каждом из нововведений.

Введение


Технология JPA является абстракцией над JDBC и позволяет быть независимым от SQL. Все классы и интерфейсы JPA расположены в пакете javax.persistence, основными составляющими технологии являются:
  • ORM (механизм объектно-реляционного отображения);
  • Entity manager API — позволяет осуществлять базовые операции CRUD;
  • JPQL и Criteria API — механизмы извлечения данных;
  • Управление транзакциями и блокировками (как с использованием JTA, так и без);
  • Механизмы обратных вызовов и listener-ов.

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

Java EE 6. Что нового в Servlet API 3.0

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


С выходом Java EE 6 на ряду со значительными изменениями в JPA 2.0 спецификации сервлетов 3.0 также притерпела ряд улучшений: упростилась разработка и процедура развертывания, конфигурирование стало более удобным, появилась поддержка асинхронных запросов и улучшилась модель безопасности. Далее я попытаюсь осветить основные изменения в API.

Программирование и развертывание сервлетов упростилось главным образом за счет введения аннотаций для декларирования сервлет (@WebServlet), фильтров (@WebFilter), листнеров (@WebListener) и ограничений безопасности (@ServletSecurity). Таким образом, и дескриптор развертывания web.xml стал опциональным элементом. Обращаю внимание, что сами компоненты Servlet API не стали POJO, привычную иерархию интерфейсов и классов никто не отменял. Также добавилась аннотация для поддержки загрузки файлов @MultipartConfig и для установки параметров инициализации @WebInitParam.

Пример Hello World сервлета
package net.ismailov.tests;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name="hw", urlPatterns = "/hello_world")
public class HelloWorld extends HttpServlet{

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    PrintWriter writer = response.getWriter();
    writer.println("<h1>Hello, World!</h1>");
    
  }

}


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

Настраиваем Tomcat для работы с JSF2 и другими компонентами Java EE 6

Время на прочтение7 мин
Охват и читатели21K
Данная статья описывает по шагам как настроить Tomcat (на текущий момент версия 6.0.26) на работу с разными компонентами Java EE 6.Вы можете пропустить чтение этой статьи и сразу получить настроенный Tomcat и пример приложения.
подробности

Пробуем 3D с помощью jMonkeyEngine

Время на прочтение6 мин
Охват и читатели30K
Практически каждый, кто занимался геймдевом, понимает, что наилучшей производительности в этой области, по понятным причинам, можно добиться лишь на языках С/С++/asm. С данным утверждением в этой статье я спорить не буду, да и раньше даже как-то не задумывался о создании realtime-игр на других языках. Однако, игры бывают разные, и надо отдавать себе отчёт в том, насколько оправданы трудозатраты на реализацию очередного продукта. Если проект монструозен, с «тяжёлой» графической составляющей, даже после проведения весьма агрессивной оптимизации всё равно требующий от конечных пользователей (геймеров) топового железа на борту, то особых конкурентов на данный момент среди языков разработки у С/С++ в этом случае нету. Но если игрушка — не более чем обыкновенная казуалка, для запуска которой и нетбука будет достаточно, то можно позволить себе куда больший простор для фантазии в вопросе выбора инструментов для разработки. Исходя из этого принципа, в данной статье попробуем разобраться, чем может похвастаться в области геймдева такой, казалось бы, не совсем подходящий для этого, но удобный в целом язык Java, на примере движка jME.
Читать дальше →

Видеоурок — Java + Intellij IDEA 9 + GWT 2.0 + Apache Tomcat

Время на прочтение1 мин
Охват и читатели11K
Записал видеоурок, думаю многим начинающим он пойдёт на пользу и ответит на многие вопросы.

image

Скачать в разрешении 1280x800 можно здесь Размер 32 мегабайта.

Вы узнаете, как создать приложение на GWT в среде Intellij IDEA 9. Мы напишем простой асинхронный запрос, сгенерируем число на сервере, отправим ответ клиенту и выведем результат на экране.

Далее, всё задеплоим на сервер Apache Tomcat и покажем работающий пример.

Конечно, многие нюансы опущены. Всё-таки урок для начинающий гвт-шников!
Удачи в программировании!

ПС. Один момент сглючил при сжатии видео, когда нужно было скопировать библиотеку gwt-servlet.jar с папки GWT 2.0 в папку WEB-INF/lib.

Введение в Spring MVC с аннотациями

Время на прочтение4 мин
Охват и читатели82K
Вчера начал разбираться со Spring MVC 3.0.Искал статьи на Хабре, нашел пару штук.Правда они были без аннотаций.
Цель этой статьи написать Hello World c использованием возможностей писать конфиги прямо в коде, благодаря аннотациям.Ну что приступим.
Читать дальше →

Abstract и Final class одновременно в языке программирования Java?!

Время на прочтение1 мин
Охват и читатели24K
Статья представляет авторское понимание главы из книги Effective Java, Second Edition by Joshua Bloch

Простым языком определим понятие абстрактного и финального класса:
Абстрактный класс не может быть инстанциирован, но он может иметь подклассы.
Финальный класс это класс от которого запрещено наследоваться.

Для более точного определения обратитесь к официальному туториалу:

Комбинация abstract и final для класса означает, что у класса не может быть наследников и нельзя создать экземпляр для данного класса.

Сделать класс abstract и final одновременно нам, например, необходимо когда мы ходим создать класс утилит, состоящих из статических методов (например java.lang.Math или java.util.Arrays).

Решение

Использование паттерна Builder в случае, когда мы сталкиваемся с конструктором с многими параметрами

Время на прочтение7 мин
Охват и читатели40K
Статья представляет вольный перевод главы из книги Effective Java, Second Edition by Joshua Bloch

В статье рассматриваются 3 альтернативных подхода к упрощению использования класса, с конструктором с многими параметрами.

Читать далее

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

Sun Tech Days и Хабралюди

Время на прочтение2 мин
Охват и читатели819
Все уже наверняка видели баннеры и слышали про намечающееся событие.

Sun Tech Days
8 и 9 апреля 2010 года в Санкт-Петербурге.

Захотелось написать пару слов о том «что это и зачем» для тех, кто ни разу не был по каким-то причинам и узнать (welcome в комменты) кто собирается из уважаемого Хабрасообщества в этот раз.

Для начала стоит сказать, что конференция международная и Sun привозит людей самых разных. Много докладов на английском языке. В прошлом году бесплатно делали синхронный перевод для тех у кого с языками не все гладко. Я ради интереса взял один раз незамысловатую приблуду для прослушивания перевода и… выключил минут через пять. Слушать можно, но благо уровень английского позволяет понимать и вживую. На стендах можно задавать вопросы и общаться с разработчиками.
Читать дальше →

Вышла NetBeans 6.9 Milestone 1

Время на прочтение1 мин
Охват и читатели843
С сегодняшнего дня доступна для скачивания новая тестовая NetBeans 6.9.
Для себя как для PHP-программиста выделил:
— поддержка Zend Framework (напомню что уже есть выбор Symfony);
— улучшенный PHPDoc;
— добавлены новые настройки форматирования Вашего PHP-кода;
— поработали также над обработкой CSS

Также добавлены новые прелести для Java разработчиков и увеличена скорость работы IDE, что не может не радовать )

Подробности здесь на оф. сайте.

Java 1.6.0_18 Update доступен — что нового?

Время на прочтение1 мин
Охват и читатели1.6K
Прежде всего — java.sun.com/javase/6/webnotes/6u18.htm l.

Коротко:

Саппорт для нескольких новых конфигураций — Windows 7, Red Hat Enterprise Linux 5.3, Firefox 3.6.

VisualVM версии 1.2 с новыми фичами (мне, например, понравился семлинг-профайлинг).

Java DB — добавлена Java DB 10.5.3.0.

Улучшения производительности, в т.ч. на уровне JVM (новая версия JVM — Hotspot 16 включена в релиз).

Никаких security fixes — все последние уже есть в 17-ой версии.

Прошу прощения за короткий пост, но времени мало, и решил лучше запостить такой. Все равно те, кому по настоящему интересно, пойдут читать оригинал :))

Марк Райнхольд о JDK 7, замыканиях, JRockit и HotSpot

Время на прочтение3 мин
Охват и читатели1.9K
Oracle TechCasts возобновились. Сегодня [т.е. 16-го февраля] Марк Райнхольд рассказывал о JDK 7 и отвечал на вопросы зрителей. Райнхольд обсуждал самое существенное, над чем он работает в проекте OpenJDK, и раскрыл некоторые предварительные наметки, направленные на объединение кода JRockit и HotSpot. Project Lambda, о котором обычно говорят, как о «замыканиях для Java», также был темой обсуждения.
Читать дальше →

Weborama + Java

Время на прочтение3 мин
Охват и читатели2.9K
Веборама+Java
Я уверен, что большинство пользователей habrahabr.ru проводит не малую часть своего времени слушая музыку.
Когда все старые песни уже изрядно поднадоели и хочется послушать чего-то нового на выручку приходят полезные веб-сервисы.
Существует множество веб-сервисов позволяющих слушать популярные композиции прямо с сайта, из них можно выделить вебораму, сайт-плеер.

Однако, эта статья не о том, на сколько удобно слушать и музыку на вебораме, она скорее поможет организовать свою коллекцию популярной музыки, используя яву и вебораму.

А что дальше?

Java сертификация — прохождение SCJP и SCBCD

Время на прочтение8 мин
Охват и читатели84K
Не нашел на хабре статей, в которых бы авторы описывали сертификации по Java и делились своим опытом подготовки и ощущениями от сдачи.
В некоторой степени хотел бы заполнить пробел этой статьей. Под катом – мое мнение по вопросу – сдавать или не сдавать сертификации, краткий обзор сертификаций по Java, а так же собственный опыт и ощущения от регистрации, подготовки и сдачи Java сертификаций SCJP и SCBCD.
читать далее

JVM изнутри – организация памяти внутри процесса Java

Время на прочтение2 мин
Охват и читатели125K
Наверное, все, работающие с Java, знают об управлении памяти на уровне, что для ее распределения используется сборщик мусора. Не все, к сожалению, знают, как именно этот сборщик (-и) работает, и как именно организована память внутри процесса Java.
Читать дальше →

Вклад авторов