Обновить
144.74

Java *

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

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

IntelliJ IDEA 12.1 c поддержкой JavaFX 2

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

Традиционно каждую весну мы празднуем выпуском свежего обновления для IntelliJ IDEA с исправлениями и улучшениями юзабилити. Этот год не стал исключением! Мы рады сообщить, что IntelliJ IDEA 12.1 наконец доступна для скачивания.



Как вы знаете, в конце прошлого года IntelliJ IDEA обзавелась поддержкой Java 8, Play Framework 2, дизайнером UI для Android, более чем в два раза ускоренным компилятором, новыми инструментами для работы с базами данных и, конечно же, темной цветовой темой Darcula. В IntelliJ IDEA 12.1 большая часть этих возможностей была улучшена с учетом тех замечаний, которые мы получили за это время, а также были исправлены многие найденные проблемы.
Читать дальше →

Впечатления от работы с Play! Framework 2.1 + Java

Время на прочтение13 мин
Охват и читатели62K
Шла четвёртая неделя тяжёлых боёв с Play! Framework 2.1 + Java. Победа неумолимо приближалась, но до полной капитуляции было далеко.
После обнадёживающих новостей про развитие Play! 2.1, например в LinkedIn, было решено попробовать его в одном новом проекте. Испытать его, так сказать, в деле. Что из этого получилось? Я бы сказал, что это была небольшая война между мной и Play! 2.1. Почему? Подробности под катом, а для нетерпеливых:

Краткий вывод

Для штурма надо было брать секретное оружие под кодовым названием Scala. Если встать лицом к лицу с Play! Framework 2.1 и крикнуть со всей силы: «Ты есть Scala-фреймворк!», то он испугается такой прямоты и скромно откроет свои двери в мир больших возможностей.
«Не знаете Scala?» — «Используйте Play 1.2».
«Хорошо разбираетесь в Scala?» — «Обязательно попробуйте Play 2.1. Но всё равно запаситесь терпением».

Подробные сводки с фронтов

Как я систему безопасности для авиакомпании разрабатывал и сам оказался в опасности

Время на прочтение14 мин
Охват и читатели140K
А еще говорят что крепостное право России отменили в 19 веке. Не верьте, это не так. История о контрастах в условиях работы в иностранной и российской компаниях, экшена разработки на java/GWT, лжи коллеги и поведения Директора, наслаждающегося своим всемогуществом и вседозволеностью, не подкрепленное законодательно.



Началось эта история когда заканчивался проект на прошлой работе. Все было солидно: крупная международная компания, коммандировки в США и Англию, стабильность и легкая скука из-за большого количества рутины на проекте. Никаких авралов, отлично выстроенный процесс разработки, отдельная QA команда и автоматизированные регрешен тесты, иностранный менеджмент за пару лет работы ни разу не повысивший голос ни на кого в комманде, проджект менеджер спокойно переносивший функционал в следующие релизы, когда не успевали с разработкой и тестированием. Отличный коллектив профессионалов, каждому можно было доверять и знать что в трудный момент помогут. Атмосфера дружбы, когда приятно приходить на работу и общаться. Но всему хорошему и спокойному всегда приходит конец :( И дальше как полоски у зебры, в моей жизни появилась новая полоса…
Читать дальше →

«Разбор полетов» — Episode 37 — А ты прошел интервью в Google ?!

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


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

Ant + Ivy VS Maven: давайте жить дружно

Время на прочтение4 мин
Охват и читатели24K
В этой статье я не буду развивать очередной холивар на тему, что круче. Скорее, будет проведен сравнительный обзор, опираясь на точку зрения самого Apache* и личного опыта нашей команды Build Factory. Обращаю внимание, что речь идет о большом Enterprise. Это означает, что в учет не берутся юзкейсы, когда вчера решили — сегодня уже должно быть сделано. Зато в учет берутся очень большие размеры проекта, распределенные по всему миру команды разработчиков и прочие прелести.
Очень часто можно услышать мнение, что Ant сам по себе с Maven сравнивать нельзя. А вот Ant + Ivy уже может составить конкуренцию Maven. Отчасти это правда.

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

Поиск с помощью Lucene в Playframework 1.x

Время на прочтение3 мин
Охват и читатели2.9K
В моем веб-проекте на Playframework-e в один прекрасный момент потребовался поиск. Идею искать в базе через like я сразу отмел, потому что хотелось ранжирования и прочих плюшек «умного» поиска, а изобретать свой велосипед не было ни времени ни желания.
Так как проект на Java — было очень соблазнительно использовать для этого Lucene.
В гугле я сразу нашел замечательный модуль для Playframework-а под названием Search, также был найден модуль Elastic Search, который тоже использует Lucene, но он требует установки отдельного сервера, и потому был отметен. Модуль Search понравился мне своей простотой — все «навороты» в нем инкапсулированы, так что пользоваться им очень легко.
С установкой модуля, как и всегда в Play-e, проблем не возникло, команда play install search отработала на «ура» и выкачала модуль из репозитория.
Добавив module.search=${play.path}/modules/search-2.0 в application.conf я уже мог использовать его в приложении.
Следуя краткому руководству, я добавил к сущности Entry, по которой собственно и следовало осуществлять поиск, аннотацию @Indexed, а полю description — аннотацию @Field.
Написав в контроллере примерно следующий код:
public static void search(String phrase, int page) {
        int pageSize = PAGE_SIZE;
        Query query = Search.search("description:" + phrase, Entry.class);
        List<Entry> entries = query.page(page*pageSize, pageSize).fetch();
        long totalCount = query.count();
        render(entries, totalCount, page, pageSize, phrase);
}

Я уже был готов делать первые тесты и наращивать функционал, но тут начались проблемы…
Читать дальше →

ContactManager, часть 5. Добавляем работу через HTTPS

Время на прочтение4 мин
Охват и читатели12K
Перед тем как отправить наш REST-сервис в свободное плавание и сделать его общедоступным, нужно позаботиться об усилении безопасности и обеспечить работу через HTTPS. В качестве контейнера сервлетов мы используем Tomcat 7.

Порядок действия будет следующим:
  • сгенерировать ключ безопасности
  • добавить поддержку HTTS в Tomcat
  • добавить поддержку HTTS в SpringSecurity
  • протестировать (а как же без этого)

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

Непрерывная интеграция в облаке

Время на прочтение4 мин
Охват и читатели7.4K
В последнее время разработчики все чаще и чаще обращаются к нам с просьбами реализовать CI в Jelastic. Для чего же нужна непрерывная интеграция? Как правило, в проекте, где над разными частями разработчики трудятся независимо, стадия интеграции является заключительной и довольно трудоемкой, соответственно требует дополнительных затрат времени. Переход к непрерывной интеграции позволяет снизить эту трудоемкость, а так же обнаружить и устранить ошибки заранее, пока они еще не укоренились и не выросли в более серьезную проблему. Да действительно, если осуществлять контроль качества на протяжении всего процесса разработки, можно сэкономить и время, и деньги, и усилия, при одновременном повышении качества. Такой подход особенно полезен для крупных проектов с участием большого количества разработчиков.

Сегодня мы покажем, как можно реализовать непрерывную интеграцию в облаке Jelastic на простом примере с использованием Jenkins.
Читать дальше →

Desktop vs Cloud

Время на прочтение1 мин
Охват и читатели5.6K
Дано: «чистая» Linux машина.
Задача: создать простое Spring приложение из темплейта и развернуть его на Cloud Foundry.
Решение: На видео. Левая сторона: desktop подход (Maven, Tomcat, JVM, Eclipse...). Правая сторона: cloud, а конкретно, Codenvy.

Видео лучше развернуть на весь экран и смотреть в HD качестве


Предвосхищая критику, сразу же скажу следующее. Это отнюдь не попытка очернить десктоп ИДЕ. Исключительно исследовательский подход. Результат в 1 час — приблизительный и округленный к часу (девелопер, имеющий дело со спрингом и Cloud Foundry, очевидно, справится быстрее). Можно управиться и за 25 минут. А при большом желании и быстрых руках — и вовсе за 15 (будет рекордом, кстати). Все же, в данном аспекте («запрыгнуть на борт») преимущества облака очевидны.

ContactManager, часть 4. Добавляем веб-сервис (REST)

Время на прочтение11 мин
Охват и читатели24K
Не успели просохнуть чернила на предыдущей версии приложения ContactManager, как раздался телефонный звонок, и я услышал в трубке голос приятеля, который начал осваивать разработку под Андроид и искал тестовый проект, на котором он мог бы практиковаться в работе с web-сервисами.

«Нет ничего проще!» — ответил я.
Так ли это на самом деле?

Тонкости оператора switch

Время на прочтение6 мин
Охват и читатели90K
Да, это целая статья по самому обычному switch в JDK 7. Бывает так, что накопленный материал кажется интересным и малоизвестным, а потом оказывается, что любая бабка у подъезда уже 50 лет знает об особенностях реализации switch. Но я попробую. Для затравки, предлагаю 3 вопроса:

  1. (Простой) Каков результат работы этого кода?
    switch(5){
    default: System.out.print(0);
    case 1: System.out.print(1); break;
    case 4: System.out.print(4);
    case 2: System.out.print(2);
    }

  2. Следующие 2 варианта практически одинаковы. Немного отличаются литералами.
    //Вариант 1
    switch("BBBBBB"){
    case "AaAaAa": break; 
    case "AaAaBB": break;
    case "AaBBAa": break;
    case "AaBBBB": break;
    case "BBAaAa": break;
    case "BBAaBB": break;
    case "BBBBAa": break;
    case "BBBBBB": break;
    }
    //Вариант 2
    switch("BBBBBB_8"){
    case "AaAaAa_1": break;
    case "AaAaBB_2": break;
    case "AaBBAa_3": break;
    case "AaBBBB_4": break;
    case "BBAaAa_5": break;
    case "BBAaBB_6": break;
    case "BBBBAa_7": break;
    case "BBBBBB_8": break;
    }
    Почему первый switch выполняется в несколько раз медленнее, по крайней мере, с отключенным JIT (-Djava.compiler=NONE)? Сами проверьте в цикле! JIT таким кодом не проведешь, но если немного пошаманить, то небольшая разница будет заметна.
  3. Какова вычислительная сложность алгоритма нахождения совпадающего значения среди n case-ов (по крайней мере, в JDK 7)?
Читать ответы и статью

Как LinkedIn делает локализации на 19 языков за 1 ночь

Время на прочтение5 мин
Охват и читатели24K
“Я хочу, чтобы после того, как программист добавил новую строчку в интерфейс, она сама перевелась на 19 языков и сама положила себя в SVN и была готова к релизу утром” — это мечта любого разработчика, вкусившего запретный плод локализации продукта на иностранные языки. В Alconost мы помогаем если не исполнить эту мечту, то хотя бы приблизиться к ней. Да, решение, похожее на описанное в статье существует не только для разработчиков LinkedIn, но и для простых смертных.

О том, как процесс построен в LinkedIn — в этой статье (внимание — Java).



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

Почему стоит изучить Clojure?

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

Что такое хороший язык программирования? Какими качествами и характеристиками он должен обладать? Ответ дать сложно. Вот одно из возможных определений: хороший ЯП должен хорошо решать возложенные на него задачи. Ведь ЯП — лишь инструмент в руках программиста. А инструмент обязан помогать нам в работе. В конце концов, это же и есть причина его создания. Разные ЯП стараются решать разные проблемы (с переменным успехом). Цель, которая ставилась при проектировании Clojure — сделать написанные нами программы простыми. И, как следствие, ускорить их создание, тестирование. А главное, уменьшить время на их понимание, изменение и сопровождение.
Читать дальше →

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

Oracle ADF. Business Components

Время на прочтение10 мин
Охват и читатели10K
Доброе время суток хабравчане. Моя предыдущая статья была небольшим интро в ADF. И так как по результатам опроса я вижу, что тема оказалась интересна, то я продолжаю писать об ADF.

Теперь после небольшого рассказа о данном фреймворке, можно «ринуться в бой» и рассмотреть фичи ADF более конкретно. Данная статья будет об ADF Business Components. О том как работать с ними декларативно и программно.
Читать дальше →

Получение серификата Oracle Certified Java Professional Programmer и о сертификации в целом

Время на прочтение5 мин
Охват и читатели118K
Добрый день жители хабра и остального мира. Эта статья является продолжением первого поста о сдаче экзамена Java Progammer I. Часть информации будет продублирована тут. Сегодня я хотел бы затронуть такие вопросы: image
  • зачем нужна сертификация;
  • какие виды сертификатов может получить инженер от Oracle;
  • что нужно знать или выучить, чтобы успешно сдать экзамены по Java Programmer I/II.

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

JDeveloper 11g Работа с Bounded Task Flows, Regions и Routers на русском

Время на прочтение1 мин
Охват и читатели4.8K
Продолжение темы переводов документации по JDeveloper 11g и Oracle ADF, начатой статьей JDeveloper 11g Разработка Веб-Приложений с Oracle ADF на русском.
На этот раз — перевод официального туториала Working with Bounded Task Flows, Regions and Routers на русский, великий и могучий, правдивый и свободный…
На сей раз, перевод более детальный, и сама тема более сложная и существенная. В данном документе рассматриваются и разжевываются такие необходимые базовые понятия как:
  • Managed beans — управляемые бины
  • Entity Object — объекты Сущности
  • View Object — объекты Представлений, или «Вьюшки»
  • Unbounded task flow — неограниченный поток задач
  • Bounded task flow — ограниченный поток задач
  • Data Control — Управление Данными ADF
  • и др...

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

Java. Новое поколение разработки. Техники Java 7 и многоязычное программирование

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


Название оригинала: The Well-Grounded Java Developer: Vital techniques of Java 7 and polyglot programming
Автор: Б. Эванс, М. Вербург
Перевод книги: Сивченко Олег
Дата выхода: осень 2013г.


Осенью у нас выходит новая переводная книга по Java. У книги очень хорошие отзывы и высокий рейтинг на сайте www.amazon.com.

Книги о Java — пожалуй, самая распространенная литература по отдельно взятому языку программирования. Но тем не менее большинство книг по Java относится к одной из двух категорий: это либо вводные пособия для начинающих, либо высокоспециализированные книги.
Читать дальше →

JDeveloper 11g Разработка Веб-Приложений с Oracle ADF на русском

Время на прочтение1 мин
Охват и читатели22K
Представляю вам перевод оф. документации Developing Rich Web Applications With Oracle ADF на русский.

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

ContactManager, часть 3. Тестирование контроллеров с помощью MockMvc

Время на прочтение11 мин
Охват и читатели46K
Всем привет.

Познакомившись с библиотекой MockMvc, я обнаружил "наличие отсутствия" её упоминаний на Хабре. Постараюсь восполнить этот пробел, тем более, что наше приложение ContactManager как раз нуждается в автоматизированном тестировании.
Дальше много примеров кода и совсем нет картинок

Агрегация логов с нескольких серверов средставами log4j

Время на прочтение6 мин
Охват и читатели20K
log4j широкоизвестная библиотека логирования, нашедшая своё применение во многих проектах. Её возможности не ограничиваются «добавлением строчек в лог-файлы». На базе log4j можно организовать сложную систему агрегации логов на центральный сервер. Кроме того, сообщество располагает GUI утилитами для анализа логов, которые удобно подключать к центральному серверу для анализа логов.
Читать дальше →

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