Рубрика «java» - 276

В моем веб-проекте на 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);
}

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

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

Порядок действия будет следующим:

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

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

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

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

в 9:55, , рубрики: cloud, eclipse, IDE, java, Веб-разработка, метки: , , ,

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

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

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

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

«Нет ничего проще!» — ответил я.
Читать полностью »

Да, это целая статья по самому обычному 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)?

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

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

в 0:02, , рубрики: ADF, java, JDeveloper, oracle, метки: , , ,

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

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

Добрый день жители хабра и остального мира. Эта статья является продолжением первого поста о сдаче экзамена Java Progammer I. Часть информации будет продублирована тут. Сегодня я хотел бы затронуть такие вопросы: image

  • зачем нужна сертификация;
  • какие виды сертификатов может получить инженер от Oracle;
  • что нужно знать или выучить, чтобы успешно сдать экзамены по Java Programmer I/II.

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

Продолжение темы переводов документации по 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
  • и др...

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


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