Метка «java» - 21

Подготовка к сдаче экзамена Oracle certified JAVA programmer Совершенно случайно заметил что на dzone появился гайд по относительно новому экзамену от Oracle и тоже решил написать.

Скажу сразу что здесь не будет silver bullet golden hammer для сдачи этого экзамена. Среди Java разработчиков распространена тяга к best practices. Так как многие проблемы уже когда-то и кем то были решены в ходе почти 20ти летного процесса развития языка, то среди программистов считается плохим тоном придумывать свой велосипед. Настоящий Java-гуру мыслит парадигмами из книг Josh Bloch и Bruce Eckel. Меня, пришедшего из других языков, это всегда умиляло. В данном случае прийдется много работать, т.к. идеального источника для подготовки пока нет.
Читать полностью »

Мне бы хотелось рассказать о применении JAAS (Java Authentification and Authorization Service) для web-приложений использующих VAADIN 7 (в качестве web-фреймворка) и Apach TomEE (в качестве Java EE контейнера).
Читать полностью »

После недавней шумихи вокруг аудиозаписей на сайте vk.com решил подстраховаться и скопировать всю свою коллекцию на жесткий диск. Для решения мною была написана простенькая утилита на Java. Ниже — её код c комментариями. Статья предназначена для читателей, знакомых с любым языком программирования общего назначения и умеющих компилировать и запускать написанные на нем программы.

Важное замечание: если Ваши аудиозаписи уже изъяты, то скачать их таким образом скорее всего не получится.
Читать полностью »

Здравствуй!

Новый Хекслет: онлайн курсы (Java, SICP, Objective C и др.) на русском языке

Осенью прошлого года я открыл Хекслет – образовательный проект с бесплатными онлайн-курсами по программированию на русском языке. Спустя неделю стартовал первый курс – Разработка под OS X. Это был очень интересный опыт, но было допущено много ошибок в разработке этого проекта.

Сегодня я рад объявить о перезапуске Хекслета! Что вас ожидает:

  • Новый сайт и удобный, быстрый движок. Со старым было столько проблем, что многие студенты просто не могли им нормально пользоваться.
  • Улучшенный формат курсов. В первой версии я пытался эмулировать физический университет в интернете, а нужно было делать изначально онлайн–курс.
  • Личное общение с преподавателем. Эту особенность хочется сделать важным отличием от други образовательных проектов.
  • Новые, интересные курсы и планы на будущие курсы.

Уже сейчас можно записаться на три первых курса:

  1. Разработка приложений на Java
  2. Структура и интерпретация компьютерных программ (SICP)
  3. Разработка под OS X

Трейлер очень интересного курса SICP:

Под катом – описания текущих и будущих курсов.

Читать полностью »

Доброго времени суток, уважаемый Хабр.
Я хотел бы рассказать, как правильно нужно использовать исключения в Java. Частично этот материал рассматривается на просторах интернета, а также рассматривается немного в книге J.Bloch Effective Java. Речь пойдет о использовании проверенных и непроверенных (checked/unchecked) исключениях. Статья будет полезна новичкам, т.к. вначале не всегда ясно, как правильно нужно пользоваться исключениями. Читать полностью »

Недавно меня пригласили в одну компанию на собеседование на должность Java-программиста. На собеседовании зашла речь о работе метода finalize. Я имел лишь поверхностное представление о работе этого метода и не смог дать достойного его описания интервьюверам. Поэтому после собеседования я должен был провести работу над ошибками во всем разобраться.
Читать полностью »

Поддержка транзакций, тестового окружения и другие удобные надстройки над commons-dbutils.

Поддержка транзакций, тестового окружения и другие удобные надстройки над commons dbutils"/>
  Если обращение к RDBMS вашего проекта ведется не через ORM или Spring JdbcTemplate, то работу через голый JDBC может сильно скрасить commons-dbutils.
Особенно если его надстроить транзакциями, работой с разными окружениями, авто-открытием/закрытием ресурсов, запрсами read-only, обработкой SqlException, возвратом pk при вставке и т.д.
Т.е, например, чтобы можно было бы сделать так:

int userId = Sql.queryForValue("SELECT ID FROM OU.USERS WHERE LAST_NAME=?", "IVANOV");
Sql.update("DELETE FROM OU.USERS WHERE FIRST_NAME=? AND LAST_NAME=?", fname, lname);
List<User> list = Sql.query("SELECT FROM OU.USERS", USER_LIST_HANDLER);
int newId = Sql.insert("INSERT INTO OU.USERS VALUES (?,?)", fname, lname);

И этот код работал бы внутри транзакции, через Application Server Connction pool и в JUnit без изменений и mock-ов.
За чуть меньше года моей работы с commons-dbutils он оброс различными классами и утильными методами, о которых и хочу здесь рассказать.
Читать полностью »

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

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

Читать полностью »

Периодически проверяя нет ли реализации того или иного стандартного алгоритма в jdk, пришла мысль составить подобный обзор. Также интересны были причины наличия/отсутствия многих известных структур данных.
Формат обзора — только ключевые свойства и особенности структур и алгоритмов в составе jdk, подробности и детали — расписаны в javadoc или легко найти в исходниках.
Надеюсь на конструктивную критику и коллективный разум если что упустил.
Хватит вступлений, итак, давайте рассмотрим что включает в себя текущий jdk 7 и почему. Читать полностью »

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

Shortcuts: github, tiles.js tiles.groovy

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

Если вы не собираетесь нанимать множество людей которые вообще не умеют кодить, то можно попробовать пойти другим путём: описывать метаданные с помощью Domain Specific Language.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js