Обновить
128K+

Java *

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

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

Автосканирование проекта в NetBeans 6.9

Время на прочтение1 мин
Охват и читатели4K
image В блоге NetBeans for PHP рассказано о возможности включения и отключения автосканирования проектов в NetBeans версии 6.9.

Разработчики услышали наконец просьбы пользователей, жалующихся на замедление работы при сканирование проектов, и реализовали возможность отключить автоматический режим.

Особенно замедление было заметно при большом количестве папок в проекте. Так же NetBeans пересканировал проекты при изменении файлов извне.

Это было необходимо для поддержания актуальности автодоплнения и навигации по проекту.

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

15 лет Java

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

На днях самому популярному в мире языку программирования исполнилось 15 лет. Созданный Джеймсом Гослингом и компанией Sun Microsystems, он является основой для множества мобильных устройств(Java ME, Android), web-сайтов(Ebay, Amazon, Google), бизнеса крупных вендоров программного обеспечения(IBM, Red Hat, Oracle, SAP), а так же открытых проектов(Apache, Eclipse). Следующая(седьмая) версия языка ждет вас уже осенью.

JavaOne приходит в Санкт-Петербург

Время на прочтение1 мин
Охват и читатели649
Только что вернулся со сборища в Oracle для участников местных групп пользователей Java. Было объявлено, что конференция JavaOne будет жить и в 2010-2011 годах пройдет в Сан-Франциско, Пекине, Сан-Паоло, Хайдарабаде и Санкт-Петербурге. В Сан-Франциско конференция пройдет в рамках конференции Oracle Open World с 19 по 23 сентября 2010 года, даты в других городах пока не объявлены.

Расширение Java: алиасы

Время на прочтение2 мин
Охват и читатели8.4K
Выкладываю данный пост с целью получения обратной связи от хабра-сообщества Java-программистов. При наличии достаточного количества голосов «за» эту фичу можно будет отправить для рассмотрения в Sun.

Проблема



После длительной работы с Java 5 и Java 6 и небольшой аналитики я пришел к тому, что generic'и в Java имеют ряд ограничений, которые не дают реализовать решение красивым способом, и обходить их порой приходится очень нетривиально. Данное высказывание относится к разработке подсистем, которые активно используют generic'и (доходит до 3-4 generic-типов со сложной иерархией в описании класса).

Приведу примеры кода, которые явно указывают на данные ограничения, а также неудобство использования (рассматривать только синтаксис):
public class A {
    public <X> void method(List<? extends X> list) {
        // processElement(list, list.get(0)); - compilation error
        processElement((List) list, (Object) list.get(0)); // compilation warning
    }

    public <T> void processElement(List<T> list, T object) {
    }

    public static class B<T extends I1 & I2> {
    }

    // Приходится повторять объявления generic-типов
    public static class С<T extends I1 & I2> extends A.B<T> {
    }
}


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

Hegel4j — диалектические переменные на Java

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

Что такое диалектическая переменная?


Кто-то возможно скажет: «Что общего у философии и программирования?». Человек недалекий скажет: «Ничего!», а мы с вами задумаемся.

Есть такой раздел философии — диалектика. Было сформулировано три закона диалектики:

1. Закон перехода количественных изменений в качественные
2. Закон единства и борьбы противоположностей
3. Закон отрицания отрицания

Из определения первого закона и родилось понятие диалектической переменной.
Диалектическая переменная — некоторое свойство объекта, от значения которого зависит внутреннее состояние объекта, принадлежность объекта к некоторому классу и, как следствие, его поведение. Так, например, температура является диалектической переменной для классов Water и Ice, а возраст для Child и Mature и т.д.

В данной статье я хочу описать библиотеку для работы с диалектическими переменными hegel4j и показать пример работы с данной библиотекой.
Читать дальше →

Получаем версию файла (exe, dll) с помощью java

Время на прочтение4 мин
Охват и читатели4.4K
Столкнулась я с такой проблемкой — как получить версию файла (exe и dll) на java. Ведь обычными стандартными средствами определить это нельзя, а только лишь можно узнать размер, дату последней модификации и некоторые другие свойства файла. Это описано тут.
Покопавшись на форумах и всё хорошенько прогуглив — нашла два таких выхода — JNI и JNA. Остановилась на втором варианте, так как на С++ писать специальную dll ну уж очень не хотелось, хотелось всё решить с помощью java и обращаться напрямую к version.dll (C:\WINDOWS\system32).
В итоге решение сводится к такой связке GetFileVersionInfo GetFileVersionInfoSize VerQueryValue. Долго пришлось поразбираться с функцией VerQueryValue — сложность была в том, что версии файлы зависят от языка и необходимо было хитрым способом получить LANGANDCODEPAGE. В итоге получился такой класс:

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

Использование apr_socket_sendfile() из сервлетов под Tomcat

Время на прочтение4 мин
Охват и читатели2.3K
В этом топике расскажу о маленьком, но эффективном способе передачи файлов пользователю из сервлета по HTTP протоколу. Используется:
  • Apache Tomcat
  • Apache Portable Runtime Library
  • Apache Tomcat Native Library
  • Ваш сервлет, которому нужно отдавать файлы пользователю
Читать дальше →

Применение JAAS в Web-приложениях на glassfish v2

Время на прочтение13 мин
Охват и читатели19K
На этот раз хочется написать про применение JAAS (Java Authentification and Authorization Service) для веб-приложений. Для начала рассмотрим простой контроль доступа к веб-ресурсам и авторизацию. Я попытаюсь раскрыть основную идею, а также дам подсказку по способу развёртывания (позже из текста станет понятно в чём проблема).

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

JBrowser: реинкарнация MozSwing

Время на прочтение7 мин
Охват и читатели3.2K
imageВспомним, что же такое MozSwing. MozSwing — единственное адекватное (по моему мнению) бесплатное и кросс-платформенное решение для встраивания браузера как компонента swing. Но, как ни печально это признавать, проект умер еще на той стадии, когда в нем оставалось слишком много ошибок. Эти ошибки, а так же просчеты в архитектуре, не позволяют использовать это решение «как есть», для ваших проектов. С непреодолимым желанием исправить это, я взялся за работу и кое-что у меня получилось.

(Статья о интеграции браузера Mozilla, как Swing компонента).
Читать дальше →

SoftReference Read-Write Cache для Hibernate — с «хвостами» для реализации кластера

Время на прочтение17 мин
Охват и читатели4.8K
В этом топике попробую рассказать о реализации системы кеширования данных в CMS ArpSite. Эта подсистема уже не раз переписывалась, но она является именно тем, что позволяет системе вообще работать с приемлимым временем отклика.

Использование SoftReference даёт возможность оставить поведение кеширования «на самотёк» — за пореблением памяти следит сама JVM, она же очищает старые элементы.

«Cluster» означает, что кеш самостоятельно отслеживает события инвалидации (устаревания, обновления) значений и следит за тем, чтобы на других серверах в кластере устаревшие элементы выкидывались из кеша. Есть и другие определения кластерного кеша. Например, основной режим работы JBoss Cache может даже «вытягивать» элементы с других узлов кластера, если их нет на текущей машине. Но для нашей системы, где скорость получения элемента с другой машины ненамного меньше скорости генерации элемента, достаточно инвалидации.

Read-Write означает, что мы не используем блокировку элементов кеша и вообще не думаем (почти) о том, что в нашей системе есть какие-то независимые транзакции. Для CMS это нормально, но, разумеется, для какого-нибудь enterprise application это было бы недопустимо.
Читать дальше →

Сегодня состоялся релиз JavaFX 1.3

Время на прочтение1 мин
Охват и читатели864
Скачать релиз JavaFx 1.3 можно тут. JavaFX 1.3 SDK доступен в связке с NetBeans 6.9 Beta.
Коротко о нововведениях:
Bind исполнении: 2-3 раз быстрее
Время запуска апплета: 20% быстрее (с Java SE 6u18 +)
Рендеринг текста: 5-10 раз быстрее (кадров в секунду / FPS)
Чрезвычайно сложные анимации: до 10 раз быстрее (FPS)
Использование памяти: 20-33% сокращение (реальных приложений, ш / Java SE 6u18 +)
Элементы пользовательского интерфейса: 50% быстрее, 33% -50% меньше памяти (тип.) и т.д.

Пользовательские критерии в Hibernate

Время на прочтение4 мин
Охват и читатели7.4K
В предыдущей статье я рассказал, как научить Hibernate хранить пользовательские типы данных. Теперь попробуем использовать эти данные при фильтрации выборок. Задекларируем результат, который мы хотим получить:
  1. String filteringTag = "habr";
  2. Session session = ...;
  3. Criteria criteria = session.createCriteria(StringArrayContainer.class);
  4. criteria.add(new StringArrayContainsCriterion("tags", filteringTag));
  5. List containers = criteria.list(); //Получаем список контейнеров, содержащих тег "habr"
  6. ...

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

Пользовательские типы в Hibernate

Время на прочтение4 мин
Охват и читатели12K
Hibernate — это прекрасный ORM инструмент, который можно настроить практически под любые свои нужны. В этом топике я покажу, как можно хранить поля произвольного типа. Для примера, возьмем массив строк (String[]) и POJO объект, который мы хотим хранить в БД:
  1. public class StringArrayContainer {
  2.     private Integer id;
  3.     private String[] tags;
  4. //  Место для геттеров и сеттеров.    
  5. }

Для того, чтобы хибернейт мог сохранять в базу поле типа «массив строк» необходимо (и достаточно) написать класс, который реализует интерфейс UserType, а также сослаться на него в мэппинге (файл hbm.xml).
  1. public class StringArrayCustomType implements UserType {
  2. //  TODO: написать реализацию.  
  3. }

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

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

Java 2D и буфер глубины

Время на прочтение7 мин
Охват и читатели4.1K
imageВсем привет. Хочу поделиться с вами своим «велосипедом», вдруг кому-нибудь еще он пригодится.

(Статья о том как реализовать буфер глубины в Graphics2D).

 

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

Java-ассемблер, мета-программирование и JPA

Время на прочтение20 мин
Охват и читатели9.8K
В этом топике хочу поделиться первым опытом по написанию системы генерации кода «на лету». В коде реализуются некоторые идеи, описанные в предыдущем топике, а сам код используется в одной старой, но работающей системе управления сайтами.

Краткая постановка задачи:
  • Есть набор виртуальных «классов» в понятии бизнес-пользователя. Например, «сайт», «папка», «новость», и т.д. Каждый из таких классов имеет набор полей (аттрибутов).
  • Пока что у нас нет наследования классов, а поля ограничены примитивными String/Integer/Long/Enum/Boolean, даже без multiple, но с возможными заданными значениями по умолчанию
  • Каждый класс записывается в отдельную таблицу, например, objects_sites, objects_news, objects_folder, etc. Таблица всегда содержит ID объекта, а также колонки для полей.
  • Нужно сделать так, чтобы загрузка этих объектов работала через JPA (Hibernate), с использованием необходимого кэширования/транзакций/Lazy-loading'а и других вкусностей, которые нам даёт JPA.

Для выполнения данной задачи использовалось:
  • В качестве баз данных — MySQL 5.0, InnoDB, три схемы базы данных (разные типы могут лежать в разных схемах, чтобы отделить системные типы от пользовательских)
  • Sun JDK 6.0
  • Tomcat 6 + JOTM 2.1.9 + Hibernate 3.5.0-Final (patched)
  • Для создания классов использовалась связка CGLib 2.2 (входящая в Hibernate) и ASM 3.2 (в Hibernate входит 3.1)

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

Sun Tech Days 2010 — продолжение…

Время на прочтение1 мин
Охват и читатели686
По возвращении из Петербурга уже успел заметить развернутые описания прошедших Tech Days. Спасибо ребятам, что выложили более или менее качественные фотографии, после которых свои «мыльные» фотокарточки и показывать не хочется.

Но раз уж пообещал продолжения фронтовых новостей, доведу дело до конца. Формат прежний — «плюсы-минусы-нейтрально».

Итак, день второй.
Читать дальше →

Мета-данные. На пути к идеалам управления моделями данных

Время на прочтение6 мин
Охват и читатели12K
О чём этот пост

  1. Это пост-обзор вариантов управления моделями данных, известных автору, на основе опыта, слухов, и чтения инструкций
  2. Также этот пост — попытка классификации существующих вариантов управления моделями данных
  3. Напоследок приводится идея и начальные штрихи в реализации системы управления моделями данных, которая не должна содержать недостатков предыдущих


Определения и ограничения

Предполагается, что читатель является (или когда-нибудь станет) разработчиком Enterprise Application, которому часто нужно писать быстро и качественно, но не боящегося лезть в дебри JPA/JTA/RMI чтобы «подкрутить напильником» особо тонкие места.

Данные — то, что хранится в базе данных приложения. Данные о клиентах, пользователях, заказах и т.п.

Метаданные — описание структуры данных. Описание того, какие типы объектов хранятся в базе данных, какие у них есть поля (аттрибуты, элементы), описание зависимостей между объектами. В общем случает типы могут наследовать атрибуты родительского типа, а один атрибут в общем случае может присутствовать у двух и более типов, несвязанных отношением наследования.

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

Sun Tech Days 2010 — как это было

Время на прочтение2 мин
Охват и читатели1.1K
Вести с фронта Sun Tech Days 2010, Санкт-Петербург.
Итак, после 30 часов тряски в поезде мы на месте.
Сразу к делу, впечатления после почти подошедшего к концу первого дня.
Читать дальше →

JetBrains на Sun Tech Days 2010

Время на прочтение1 мин
Охват и читатели775
В этом году компания JetBrains принимает активное участие в Sun Tech Days. 8 и 9 апреля вы сможете встретиться с ведущими разработчиками наших продуктов на стенде JetBrains и послушать их доклады.
Читать дальше →

Отчет о DeadLock'ах в работающем приложении

Время на прочтение6 мин
Охват и читатели4.8K
Привет тебе хабражитель!
В данной статье, точнее примере я хочу показать как можно получить информацию о залоченных потоках Вашего многопоточного java приложения. Под катом будет представлен пример простейшей ситтуации DeadLock'а, а также способы получения информации о нем.
Под кат