Обновить
392.35

Java *

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

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

Перевод туториалов по libGDX — часть 3 (пакет scene2d)

Время на прочтение6 мин
Охват и читатели36K
Это третья статья из цикла переводов туториалов libGDX.
Первая статья находится здесь
Вторая статья находится здесь

scene2d



Пакет scene2d представляет собой классы для реализации графа для двухмерной сцены, которые могут быть полезны для управления группой иерархически связанных актеров (актер — некоторая сущность, которая может быть нарисована и которая может обрабатывать события ввода — прим. переводчика). Этот пакет предоставляет поддержку для обработки управления, рисования с возможностью поворота и масштабирования актеров в системе координат относительно родительского актера. Этот пакет также предоставляет фреймворк для управления действиями актеров через некоторые промежутки времени (tweening). Пакет scene2d.ui предоставляет актеров, которые могут быть полезны при построении графического интерфейса пользователя.
Читать дальше →

Do It Yourself Java Profiling

Время на прочтение17 мин
Охват и читатели62K
На прошедшей конференции Appication Developer Days, Роман Елизаров (elizarov) рассказал, как профилировать, т.е. исследовать производительность любых Java-приложений, без использования специализированных инструментов, будь они хоть вендорские, хоть open-source.Оказывается, можно использовать малоизвестные, встроенные в JVM возможности (threaddumps, java agents, bytecode manipulation), и быстро и эффективно реализовать профилирование, которое можно запускать постоянно даже на боевой системе.Вот видео доклада (тут оно косолапо эмбедится, но оно 1280x720, все отлично читаемо):

Но я предлагаю также, взглянуть на 70K текста иллюстрированной статьи-стенограммы под катом, составленной мной по видео и слайдам.
Статья-стенограмма. Многобукв.

Использование GWT с Documentum & Webtop

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

Введение


В этой статье я хотел бы рассказать о маленьком исследовании по скрещиванию GWT и Webtop.
Вначале отвечу на законный вопрос: «Зачем это нужно?». Я преследовал несколько целей:
1) Изучить GWT.
2) Более детально изучить внутренности WDK и Webtop.
3) Возможно, найти способ создавать GWT компоненты для Webtop.
GWT был выбран потому что позволяет быстро создавать UI и клиентский код Java программистам. А так же поддерживает AJAX «из коробки».
Использовалась именно связка с Webtop, а не создание своего приложение с нуля, так как это заняло бы больше времени (поддержка Documentum сессий, изобретение замены action и precondition) и не позволило бы использовать уже написанный код на Webtop.
Читать дальше →

ВКонтакте Android SDK

Время на прочтение2 мин
Охват и читатели66K
Решили поделиться своими наработками по реализации ВКонтакте API для Android. Данное SDK позволяет быстро авторизоваться и вызывать методы API, например отправить запись на стену, получить список друзей пользователя и многое другое. Изначально библиотека разрабатывалась как ядро проекта Kate Mobile. Совсем недавно пришла идея оформить часть кода в ощедоступную библиотеку. На скорую руку вынести её в отдельный проект и теперь она доступна всем желающим. Сейчас реализованы основные методы API, пополняем по мере необходимости. Будем улучшать на основании полученного фидбэка. Если он будет.
Читать дальше →

Перевод туториалов по libGDX — часть 2 (рисование изображений)

Время на прочтение7 мин
Охват и читатели33K
Представляю вашему вниманию перевод второго туториала по libGDX. Оригинал находится здесь. Первая часть находится здесь.

Этот туториал дает представление как рисовать изображения используя OpenGL и как libGDX упрощает и оптимизирует этот процесс с помощью класса SpriteBatch.

Рисование изображений.



Изображение, полученное из его оригинального формата (например, PNG) и загруженное в GPU называется текстурой. Текстуры рисуются по некоторой спецификации, которая представляет собой описание геометрической фигуры и каким образом текстура накладывается на вершины этой фигуры. Например, геометрическая фигура может быть прямоугольником и каждый угол прямоугольника относится к соответствующему углу текстуры.
Читать дальше →

Ваше приложение на JavaFX во Вконтакте

Время на прочтение2 мин
Охват и читатели16K
На JavaDay в Питере мне задали вопрос: «Пригоден ли JavaFX для написания браузилок — небольших браузерных игр?» Мой ответ: «Да, конечно пригоден», — очевидно, нуждается в подтверждении. Этому и посвящена данная публикация.

В JavaFX 2.1 есть необходимые для такого рода приложений богатые возможности в области графики, анимации, поддержки медиа-контента. Для их использования не нужно изучать новый язык программирования, достаточно знания Java. API сравнительно небольшой. Разобраться в основных концепциях помогут слайды с моей презентации. Для всего остального есть Java community и множество доступных для языка Java библиотек.

Далее речь пойдет о развертывании приложения и добавлении его в социальную сеть ВКонтакте.
Читать дальше →

Stateless и Statefull страницы в Wicket 1.4

Время на прочтение2 мин
Охват и читатели6.8K
Для начала немного уточним о чем идет речь. Wicket хранит последнюю просмотренную страницу в сессии, но в случае если страница очень большая, иногда это может стать проблемой. Для того что бы избежать этих проблем, можно попытаться сделать страницу Stateless(т.е. не имеющую состояния).
Итак, Stateless page — это страница не имеющая состояния, Statefull page — это страница с состоянием.

Stateless страницы не хранят никакого состояния из-за чего нет необходимости сохранять их от запроса к запросу.
Такие страницы не сохраняются ни в сессии ни в истории посещённых страниц хранящейся на диске, таким страницам не присваивается версия, как это происходит со statefull страницами. При каждом запросе к такой странице, её экземпляр создаётся заново.
Читать дальше →

Йаззь и Джава

Время на прочтение1 мин
Охват и читатели24K
2 февраля 2012 года микроблоггерка, действующая под псевдонимом «Лоличка», попросила:

— Если уж вы произносите «Java» как «Ява», то будьте любезны говорить не «jazz», а «йаззь».

(Конец цитаты.)

Судя по более чем полусотне ретвитов, этот пример про джаз и язя (опирающийся на известный видеомем) получился наглядным.

Очевидно, он в той же мере касается и джаваскриптов.

Андрей Бреслав — Язык Kotlin для платформы Java

Время на прочтение1 мин
Охват и читатели13K
Привет, Хабр!

С любезного разрешения сообщества Java-разработчиков JUG.ru мы публикуем видеозапись выступления Андрея Бреслава о новом языке программирования Kotlin для платформы Java, которое состоялось на встрече 26 апреля.
Читать дальше →

JAXB vs. org.hibernate.LazyInitializationException

Время на прочтение7 мин
Охват и читатели5.7K
Статья будет полезна всем, кому интересно узнать способ устранения ошибки LazyInitializationException при JAXB сериализации объектов, созданных при помощи Hibernate.
В конце статьи имеется ссылка на исходный код проекта, реализующего предложенное решение — использование custom AccessorFactory.

Для сравнения рассмотрено, как аналогичная проблема решена в популярном JSON-сериализаторе — Jackson.
Читать дальше →

JavaFX на Raspberry Pi

Время на прочтение1 мин
Охват и читатели3.6K
Симону Риттеру удалось запустить JavaFX-приложение на платформе Raspberry Pi.
image
Для запуска он использовал коммерческую версию Open JDK для процессоров ARM. Пересобрать JavaFX ему не удалось (из-за лени, как он говорит) и он воспользовался непубличной сборкой JavaFX для платформы Beagle Board.
Читать дальше →

«Детский» геймдев или «Как я играл в инди-разработчика»

Время на прочтение6 мин
Охват и читатели15K
Здравствуй, хабр и его обитатели. В этом посте я поделюсь с тобой прохладной историей о том, как я пытался создать Самую Настоящую Инди Игру в одиночку, и через что мне пришлось пройти, чтобы не бросить это неблагодарное дело на полпути, а также о том, что в итоге вышло.
Читать дальше →

Перевод туториалов по libGDX — часть 1 (настройка проекта в Eclipse)

Время на прочтение5 мин
Охват и читатели33K
Эта статья — перевод первого туториала для проекта libGDX. Оригинал находится — здесь

От переводчика: недавно у меня появилось желание написать игру под Android. У меня есть некоторый опыт программирования на Java, но я почти не сталкивался с разработкой под Android. Тут я наткнулся на библиотеку libGDX, которая позволяет писать кросплатформенные игры. Также я наткнулся, что по ней не хватает русской документации, а конкретно — туториалов. Поэтому у меня появилось желание перевести туториалы. Это мой первый перевод, поэтому буду рад любым замечаниям и указаниям на неточности.

Настройка проекта


Примечание: есть проблемы с использованием Java 1.7 для Android-приложений. Убедитесь, что вы используете Java 1.6
Примечание: надо сделать несколько шагов для настройки приложения под Android. Смотрите ниже.

Эта статья описывает, как настроить Eclipse для разработки и запуска приложений как на настольном компьютере, так и на Android-устройствах.
Читать дальше →

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

Акторы и AJAX

Время на прочтение10 мин
Охват и читатели2K
Для написания программ, выполняющих параллельные вычисления, широко применяются потоки (threads). При том, что потоки позволяют достаточно гибко организовывать парраллелизм в программах, они обладают рядом недостатков. Дело в том, что потоки разделяют между собой память. Это значит, что очень легко по неосторожности нарушить целостность программы. Побороть это можно с помощью блокировок, которые позволяют некоторому коду получать эксклюзивный доступ к обшему ресурсу. Однако, сами блокировки, помимо того, что их нужно не забывать проставлять, порождают, в свою очередь, проблемы. Одна из самых страшных проблем — это возможность породить deadlock. Впрочем, даже без этого написание действительно хорошо работающей многопоточной программы превращается в ювелирный труд.

Но у потоков есть альтернативы. Из известных мне — модель акторов (actors) и software transaction memory. Героем этой статьи, как понятно из заголовка, являются первые. Впрочем, по STM есть достаточно много статей в интернете, которые удовлетворят ваше любопытство.

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

Измерение производительности Play Framework 2.0

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

Измерение производительности Play Framework 2.0


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

Тестирование фрэймворка будет проводиться с помощью простейшего приложения разработанного на его основе. В результате выполнения тестов необходимо ответить на следующие вопросы. Какое максимально возможное количество одновременных подключений? Сколько оперативной памяти потребляют эти подключения? Сколько запросов в единицу времени может обработать тестируемое приложение?
Читать дальше →

Размеры массивов в Java

Время на прочтение2 мин
Охват и читатели33K
Размеры объектов в Java уже обсуждались на Хабре, например, здесь или здесь. Мне бы хотелось подробнее остановиться на размерах многомерных массивов — простая вещь, которая для меня стала неожиданной.

Оптимизируя вычислительный алгоритм по памяти, я наткнулся на то, что при определённых (вполне разумных) входных параметрах создаётся массив float[500][14761][2]. Сколько он может занимать в памяти (на HotSpot 1.6.0_26 32bit, если кому интересно)? Я примерно прикинул, что 500*14 761*2*sizeof(float) = 500*14 761*2*4 = 59 044 000 байт плюс какой-то оверхед. Решив проверить, как на самом деле, я воспользовался Eclipse Memory Analyzer (невероятно волшебная вещь, рекомендую!) и обнаружил, что «Retained Heap» для этого массива составляет 206 662 016 байт! Неплохой оверхед — 350%. Посмотрим, почему так получилось.
Читать дальше →

Проект Lombok, или Объявляем войну бойлерплейту

Время на прочтение6 мин
Охват и читатели58K
Открою не Америку, но шкатулку Пандоры: в Java-коде много бойлерплейта. Типовые геттеры, сеттеры и конструкторы, методы ленивой инициализации, методы toString, hashCode, equals, обработчики исключений, которые никогда не выбрасываются, закрывалки потоков, блоки синхронизации. Проблема заключается даже не в том, чтобы написать всё это — современные среды разработки справляются с такими задачами нажатием нескольких клавиш. Сложность в поддержании бойлерплейта в актуальном состоянии по мере внесения модификаций в код. А в некоторых случаях (многопоточность, реализация методов hashCode и equals) и сам шаблонный код написать без ошибок — далеко не простая задача. Одним из решений проблемы является генерация кода, и в этой статье я расскажу про проект Lombok — библиотеку, которая не только может избавить вас от бойлерплейта, но и сделать это максимально прозрачно, с минимальной конфигурацией и, что немаловажно, с поддержкой на уровне среды разработки.
Читать дальше →

JavaOne/Oracle Develop 2012: общие впечатления. Рассказ с картинками

Время на прочтение5 мин
Охват и читатели1.3K
17-18 апреля 2012 года в Москве, в здании Российской Академии Наук прошла, уже вторая по счёту, конференция JavaOne/Oracle Develop. В прошлом году я посещал сие мероприятие и мне очень понравилось, поэтому приобрёл входной билет как только они появились в продаже. К слову, их минимальная стоимость выросла вдвое относительно прошлого года, но осталась вполне адекватной — 1 000 рублей.

image
Автор фото — Trukhin Yuri

На входе встречал известный Java-персонаж Дюк.
Читать дальше →

Ограничения через реализацию интерфейса против свободы через рефлекшн

Время на прочтение3 мин
Охват и читатели1.4K
  В последнее время очень часто появляются фреймворки которые позволяют разработчику реализовывать функционал в свободном виде не прибегая к наследованию от интерфейсов. Примеры можно увидеть в таких как EJB 3, JUnit 4, JSF 2, Spring Framework 3 и т.д.
Под катом найдете обсуждение обоих подходов.
Читать дальше →

Распространяется ли копирайт на языки программирования?

Время на прочтение2 мин
Охват и читатели3.1K
После полутора лет досудебных разбирательств, сотен рассмотренных документов с участием 75 адвокатов с обеих сторон, представители Oracle и Google сойдутся лицом к лицу в окружном суде Северной Калифорнии, чтобы выяснить, подлежат ли языки программирования защите копирайтом.

Столь кардинальную постановку предложил сам судья. В специальном запросе на прошлой неделе суд постановил, что Google и Oracle должны твёрдо разъяснить свои позиции по фундаментальному вопросу: «применимы ли законы о защите интеллектуальной собственности в отношении языков программирования». И компании уже предоставили свои ответы. В частности, компания Google высказалась чётко: «Нет, языки программирования не подлежат защите копирайтом. Компания Google всегда придерживалась такой позиции».
Читать дальше →