Java практикум

Практические заметки по программингу на языке Java

Lucene java

Apache Lucene набор библиотек java при помощи которых можно организовать полноценный поиск в интересующих вас данных(текстовых данных). На данный момент существует несколько поисковых движков использующих api Lucene таких как Apache Solr, Nutch, Hibernate Search. Без основ трудно разобраться и настроить их (движки), как бы вам не хотелось нужна база, основа понимания Lucene. Эту статью я хочу посвятить основам поиска на Lucene и так начнем наше погружение. Начнем как не странно с теории. Пусть у нас есть 2 книги:
Книга 1:
название первой книги - "Java in Action"
ISBN "1-932394-28-2"

Hibernate Spring

Появилось немного свободного времени вот решил написать статью как быстро связать 2 технологии Hibernate и Spring. В интернете много примеров но в них постоянно не хватает важных нюансов, или простого, не сложного примера, я не буду делать акцент на подробном изложении примера а только объясню как наиболле просто связать Hibernate и Spring между собой. Итак давайте по порядку расмотрим простой пример.

Пусть у нас есть сушность(Entity) Division:

package net.mine.employeemanager.domain;

import javax.persistence.Id;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Table;

@Entity
 @Table(name = "division")
 public class Division {

 @Id
 @Column(name = "ID")
 private Integer id;

 @Column(name = "NAME")
 private String name;

 public Division() {
 }
 ....
 getter & setter
 }

Apache Ivy

Познакомтесь Apache Ivy очень интересный проект для программистов Java. В чем его интересность - он позволяет разработчику управлять зависимостями java библиотек при компиляции и развертывании java приложений т.е. автоматизировать сборку приложения в области закачки нужных вам java библиотек. Ivy тесно интегрирован с проектом Apache Ant - java-утилитой для автоматизации процесса сборки java приложений. В принципе как я понял из документации Ivy можно использовать и отдельно без ant, но куда интереснее в связке с Ant.

JCaptcha JSP совместное ипользование.

Заинтересовала меня captcha в java и как ее можно быстро прикрутить к простому
сайту написанному на jsp. Нашел не много информации о jcaptcha, вот теперь хочу
поделиться ей. Давайте напишем простое приложение состоящее из сервлета -
который создает captch'y и проверяет правильность заполнения поля формы у captcha.
Нам понадобится - Apace Tomcat, набор библиотек jakarta-commons 3.2 или выше,
библиотека jcaptcha:

JSF Spring совместное ипользование.

В свое время я не нашел в инете простого примера как связать JSF и Spring. Давайте напишем вместе простое hello world - приложение, оно будет состоять из 2 - объектов, 1-й helloWorldMessage - создается spring'om  и вставляется в jsf-объект helloWorld. Для связки 2-х технологий нужно только правильно настроить файлы конфигураций JSF и Spring. Нам понадобится - Apace Tomcat, набор библиотек jsf1.2, набор библиотек spring-framework-2.5.5:
commons-codec.jar
commons-logging.jar
jsf-api.jar
jsf-impl.jar
jstl.jar
jtds-1.2.4.jar
spring-security-core-2.0.4.jar

Spring кратко - введение.

Я бы spring fraemwork назвал бы клеем, который позволяет создавать и удобно
связывать различные java модули и технологии(jdbc, struts, servlets, etc.).
Spring это модульная система в основе которого лежит основной его модуль
Spring core - к которому мы начинаем прикреплять необходимые кирпичики-модули,
ядро представляет собой IoC - контейнер, который позволяет нам "не жестко"
склеивать технологии, что в свою очередь позволяет сократить код и сделать
его интуитивно понятным. Давайте расмотрим все на примерах, начнем с HelloWorld.

Struts 2 Spring совместное ипользование.

В свое время я не нашел в инете простого примера как связать Struts 2 и Spring.
Давайте напишем вместе простое hello world - приложение. Для связки 2-х технологий используется простой плагин struts2-spring-plugin который содержится в библиотеке struts2-spring-plugin-2.1.6.jar. Нам понадобится - Apace Tomcat, набор библиотек struts2.1.6, набор библиотек spring-framework-2.5.5:

Hibernate 3 Mapping collections

В прошлой статье мы научились сохранять,редактировать и удалять данные для 1 таблицы БД, но часто на практике встречается что нам нужно извлечь данные из нескольких таблиц связанные между собой некоторым ключем(foregen key). В hibernate все это можно сделать при помощи collections(list, map, set).
Немножко теории:
    Интерфейс List хранит последовательность элементов, они могут быть вставлены или извлечены с помощью их позиции в списке отсчитываемым от нуля индексом, список может содержать дублированные элементы. Интерфейс Set похож на List  но он не допускает дублирования элементов. Интерфейс Map отображает уникальные  ключи в значения, ключ это произвольный объект который вы испотзуете для отыскания соответствующего значения. Нам так же понадобится понимание некоторых постулатов которые вводятся hibernate: а именно понятий one-to-one, one-to-many, many-to-one, many-to-many.

Hibernate Unidirectional One to One Association Mapping

Дистанционное управление компьютером с помощью сотового телефона и bluetooth

Java-практикумНа днях увидел ссылку на программу BluePad, превращающую сотовый телефон в пульт дистанционного управления компьютером. Давно собирался написать что-то подобное, а тут - пожалуйста, готовый вариант. Скачав и распаковав продукт, обнаружил, что серверная часть написана на Pithon'е, требует удовлетворения некоторых специфических зависимостей, разбираться с которыми не было ни времени, ни желания. К тому же интерфейс клиентской части (мидлета) и функционал не вполне соответствовуют моим потребностям. Заглянув в исходный код BluePad, я обнаружил там массу замечательных идей, побудивших взяться за собственную разработку. В итоге буквально за пару дней родился проект Bluetooth Backdoor. Основное его назначение - быстрое создание мидлетов, с помощью которых можно управлять ПК посредством Bluetooth.

Hibernate 3 удаление, изменение и загрузка pojo-объектов

В прошлой статье мы научились настраивать hibernate,  в этой научимся сохранять, редактировать и удалять. Немножко теории есть стандарт Как нужно пользоваться  hibernat'om. Открываем сессию(Session), получаем все необходимые нам данные, удаляем, вычисляем, редактируем, выводим данные пользователю, сохраняем все данные, сессию закрываем. После закрытия сессии не желательно использовать данные сохраненные в pojo-объекте. До тех пор пока вы используете объекты, полученные из Hibernate, вы должны иметь открытой сессию, в которой были получены эти объекты, и иметь активную транзакцию!
Использовать эти объекты можно только в однопоточной среде! Иначе со стороны Hibernate возможны ошибки (Рекомендация разрабочиков Hibernate). Если что-то пойдет не так Hibernate выкидывает ошибку HibernateException  и её надо вылавливать в catch, Для Hibernate ошибка HibernateException то же самое что Exception в Java т.е. она стоит во главе иерархии ошибок Hibernate.
Приведу стандартный набор кода:

Настройка Hibernate 3 java

Сидя на прошлой линуксовке рядом с Mabel'ом он спросил после 8 кружки Пива что такое Hibernate? Я как смог объяснил :) Этот разговор натолкнул меня на мысль что в русском сегменте интернета нет практически полных статей на тему что такое  Hibernate и как его настроить и использовать, по этому я Начинаю ряд статей посвяшенных Hibernate 3 версии.

Нам потребуется:
1. jdk 1.6
2. ant 1.6.5
3. mysql 5
4. hibernate-3.2.0
5  mysql-connector-java-3.1.13-bin.jar

Справочная карточка Администратора JBoss 4.X.X (OS Linux)

Хотя я пишу эту статью для  OS Linux возможно некоторые примеры будут
работать и с другими операционными системами, я на это надеюсь. Прежде чем
перейти к изложению материала, я бы хотел напомнить как установить JBoss в крации.
Прежде всего нужно скачать дистрибутив ( у меня jboss-4.2.2.GA.zip),
распаковать его в директорию (у меня /opt/jboss-4.2.2.GA), установить переменную
окружения $JBOSS_HOME  я делаю все в файле .bashrc (запускается каждый  раз при
входе пользователя в sh):
#cat /home/vit/.bashrc

Tomcat: умный котег для Java-программиста

Помня свое обязательство рассказать про написанный на Java и для Java веб-сервер Tomcat, начать хотел бы с такого понятия, как сервлет. Появилось оно в конце 90-х, когда популярность Java была, можно сказать, в зените и в ходу у веб-разработчиков были апплеты. Они представляли собой встраиваемые в html-странички "приложеньица", умевшие примерно то же, что нынешние Flash и AJAX. Java всегда стремилась проникнуть во все сферы программирования, так что написанные на этом языке программки, исполняемые на стороне сервера и призванные заменить популярные тогда perl-скрипты (CGI) не заставили себя долго ждать. Сначала их "прикручивали" к веб-серверам любительскими способами (вот ссылка, датируемая 1998 годом для интересующихся историей Java). Потом фирма Sun, идя навстречу пожеланиям трудящихся, разработала Servlets API, позволяющее создавать на стороне сервера сколь угодно сложные и при этом удобно организованные обработчики веб-запросов.

 

Установка JBOSS

Начинал я когда-то изучать java, хороших и свежих статей на русском про установку
 JDK + Jboss + Mysql  не было пришлось учить английский :)  счас есть но в них тупо говорится
 как поставить но не говориться зачем мы так делаем, в этой статье я хочу дать основы и понятия
 установки связки JDK + Jboss + Mysql. И так приступим. Для начала надо сказать что Jboss
 - это Application server написанный на java по этому нам понадобиться:

Java-практикум. Удаленные процедуры в GWT

Некоторое время назад я опубликовал на нашем ресурсе матераил о Google Web Toolkit - одном из замечательнейших творений команды Google. Напомню, что этот инструмент позволяет писать сайты не зная даже толком HTML. Не нужно заморачиваться тем, что разные браузеры по-разному интерпретируют интернет-странички, не нужно увязывать в единую систему кучу разнородных файлов. Правда, нужно знать Java. Но это, скорее достоинство, чем недостаток, потому что разве не прекрасно, когда клиент и сервер пишутся на одном и том же языке? Но достоинства GWT для Java-программиста на этом не заканчиваются. Из браузера можно обращаться к методам на удаленной машине почти так же просто, как к локальным. Об этом сегодняшний материал.