/*айтишные заметки*/
Связывание данных - JAXB.
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlAttribute; @XmlRootElement(name="auto") public class Auto { private Boolean newAuto; private String autoMarka; private String autoModel; private Integer horsePower; @XmlAttribute(name = "new") public Boolean getNewAuto(){ return newAuto; } public void setNewAuto(Boolean value){ newAuto = value; } @XmlElement(name = "marka",required = true) public String getAutoMarka(){ return autoMarka; } public void setAutoMarka(String value){ autoMarka = value; } @XmlElement(name = "model") public String getAutoModel(){ return autoModel; } public void setAutoModel(String value){ autoModel = value; } @XmlElement public Integer getHorsePower(){ return horsePower; } public void setHorsePower(Integer value){ horsePower = value; } }
JavaEE: EJB компонент на Jboss 7.1.
Dropbox API (Java SE).
Dropbox предоставляет множество библиотек на разных языках, для доступа к API. А если вы собираетесь работать на более низком уровне - пожалуйста, есть детальное описание REST API. В целом, все подробно документировано, но перейдя по ссылке Tutorial для Java SDK, видим руководство к Android SDK. На вопрос, где руководство к Java SDK, ответ простой: "Where are the Java instructions? For platforms other than Android, all you need is to download and uncompress the latest version of the Java SDK from Development kits. Include everything in the lib folder on your project's build path." Все конечно так, добавляем библиотеки в проект, кроме этого ничего не надо. Вместе с SDK идет и пример, но не совсем такой, как хотелось бы. Небольшая неясность, на первый взгляд, с Java SDK связана с "политическими" соображениями на данный момент. Приведу элементарный пример использования Dropbox API, для Java SE.
Автоматизация маппинга XML - Java.
<data type="dictionaries"> <dictionary name="buildings"> <itemnum>2</itemnum> <comment>Buildings</comment> <element> <id>0</id> <name>building 1</name> <cost>10000.50</cost> </element> <element> <id>1</id> <name>building 2</name> <cost>20000.50</cost> </element> </dictionary> </data>
<test-object> <items type="available browsers"> <item> Firefox </item> <item> Opera </item> <item> IE </item> <item> Chrome </item> </items> <use-browser version="12"> Opera </use-browser> </test-object>
Конвертация PDF в HTML на Java.
Связывание XML данных с помощью Castor.
Java web frameworks. JSF vs Spring MVC.
Рефлексия в Java - несколько примеров.
Одним из следствий популярности Java является несметное количество библиотек для этого языка, на все случаи жизни. Ввод/вывод, работа с файловыми архивами, парсеры различных форматов данных и прочее. Java - язык созданный для программистов, ориентированный в том числе на скорость разработки. Множество доступных библиотек делают разработку еще более быстрой. Кроме того, во многих случаях это снижает вероятность появления типичных ошибок в коде. Хочу привести четыре Java библиотеки, которые хорошо зарекомендавали себя на практике, которые мне приходилось использовать чаще всего при работе с Java SE и которые мне понравились больше всего. Само собой - вы можете найти еще множество хороших библиотек, которые подходят именно вам, а возможно - заменяют приведенные библиотеки.
Apache Commons IO
Сайт: http://commons.apache.org/proper/commons-io/
Проект Apache Commons включает в себя очень много составляющих и Commons IO - лишь малая часть. С одной стороны - это настолько популярная библиотека, что наверное не нуждается в представлении. Но с другой - ее просто нельзя не упомянуть! Apache Commons IO, как можно догадаться по названию, служит для задач ввода/вывода. Широко и давно используется в мире Java, а значит - хорошо отлажена.
Посмотрим на пару элементарных примеров c классами IOUtils и FileUtils.
Класс IOUtils служит для работы с классами InputStream, OutputStream, Reader и Writer. Класс FileUtils служит для работы с классом java.io.File. Для того чтобы считать текст из файла с заданной кодировкой UTF-8, нужно написать примерно следующее:
public String readTextFromFile(String path) throws Exception { final String ENCODING = "UTF-8"; return FileUtils.readFileToString(new File(path), ENCODING); }
Когда меня попросили помочь сделать/найти игру в крестики-нолики на Java с графическим UI (для двух игроков) - первым делом я погуглил на предмет наличия готового и пристойно реализованного сабжа. Возможно я плохо искал, но все что мне попадалось было сделано плохо. Где-то размер игровой доски задан жестко, в большинстве найденных примеров на Java Swing - вся логика игры неподобающим образом смешана с пользовательским интерфейсом. В сети выложено немало реализаций этой игры, но почему бы не добавить еще одну?
Итак, в этом примере для создания пользовательского интерфейса используется Swing. Размер игровой доски 5x5:
Для выигрыша необходимо составить непрерывную линию из крестиков или ноликов длиной в 5 элементов. Врочем, размер поля и длину линии, которую нужно составить для выигрыша, можно легко изменить. Как видно на скриншоте, здесь используется тема Nimbus, которая включаена в JRE начиная с Java SE 6 Update 10. Структура проекта выглядит так:
В пакете ru.spbstu.tictactoe - классы, необходимые для создания графического интерфейса; в пакете ru.spbstu.tictactoe.common - классы, необходимые для создания игры в крестики-нолики, которые не привязаны к представлению (UI). Класс GameBoard является представлением игрового поля для игры в крестики-нолики, а также содержит все необходимые для реализации игры методы:
Google Custom Search - это система пользовательского поиска, которая позволяет создавать вам собственную "поисковую машину". Одно из распространенных применений Google Custom Search, это поиск по вашему сайту. Если вы владелец сайта и вы решили сделать поиск по нему с помощью Google, вы можете создать свою систему пользовательского поиска, указать Google, что искать нужно только на вашем сайте, а кроме того - доступны другие настройки. Однако это вовсе не единственное назначение и возможное применение Google Custom Search. Поиск может производиться не только на вашем сайте - это может быть заданный по определенным правилам список сайтов, или же вообще весь веб. Использовать Custom Search можно по разному - существует несколько вариантов API. В этой статье я покажу, как использовать Google Custom Search из Java приложения, используя REST API. Целью этого примера будет: создать Java приложение, которое может выполнить поиск в Google с помощью Custom Search API и получить список ссылок из результатов поиска.
1. Создаем свою систему пользовательского поиска.
Первым делом нужно создать вашу систему поиска. Для этого перейдите к управлению системами пользовательского поиска - https://www.google.com/cse. Итак, создаем новую систему поиска, кликнув "Add":
При создании системы нужно указать адрес или адреса, по которым будет выполняться поиск. Цель нашего проекта - поиск во всем вебе, так что указываем любой URL, затем переходим к свойствам только что созданной системы и в настройках указываем, что нам необходим поиск во всем Интернете:
Codenvy - облачная IDE для Java и не только
В поисках стоящей облачной IDE для JavaEE наткнулся на интересный проект - Codenvy. Codenvy это полнофункциональная облачная среда разработки, которая поддерживает различные языки и платформы. Поскольку меня интересовала именно возможность разработки веб-приложений JavaEE, я расскажу свои впечатления именно об этом.
В процессе поиска, я посмотрел на разные облачные IDE, но это первый и единственный проект, который мне действительно понравился. Во первых, мне хотелось получить именно IDE, а не просто модный_текстовый редактор аля Sublime Text. Во вторых, мне хотелось чтобы среда позволяла вести отладку JavaEE приложений, используя например Tomcat. Так вот, что мы имеем с Codenvy.
Codenvy поддерживает много платформ - Tomcat, Jboss и пр. Разумеется, можно запустить и standalone Java проект, собрав его с помощью Maven. Можно импортировать готовый Maven-проект, сделанный например в Eclipse. После чего останется лишь выбрать чем проект собирать (я выбрал maven) и на чем запускать (я выбрал Tomcat). После таких минимальных настроек, проект сразу запустился! В IDE есть:
Однажды я столкнулся с ситуацией, когда мне нужно было быстро сделать функционал для печати одного отчета из Java, который был несложен по структуре данных, но должен был быть красиво оформлен (с определенными шрифтами, изображением и т.п.). Если формировать PDF программно из Java, этого добиться сложно. Как правило, для печати PDF отчетов по шаблону, в Java используются библиотеки вроде JasperReports, Apache PDFBox и пр. Следовательно, если использовать типичные библиотеки для формирования отчетов, то нужно в первую очередь разработать соответствующий шаблон отчета. И здесь я подумал: "один отчет, нужен дизайн шаблона. Быстро сделать дизайн? HTML/CSS!". Лень - двигатель прогресса. В итоге, я сделал печать PDF отчета на основе HTML шаблона. Приведу пример, который показывает, как можно получить PDF документ на основе HTML5 шаблона с произвольным дизайном. Разумеется, такой способ печати PDF не претендует на замену традиционных решений, но в некоторых случаях может быть полезен.
Итак, в качестве шаблона используется HTML5 документ, который определяет структуру и дизайн шаблона. Данные, которые необходимо отображть в PDF отчете будут заполняться в документе с помощью библиотеки JSoup. Затем, заполненный документ будет преобразовываться в PDF с помощью библиотеки Openhtmltopdf. В демонстрационном проекте будет использоваться следующая структура:
В папке fonts положим шрифт, который будем использовать в отчете (он необходим для формирования PDF документа). items_report.html - шаблон отчета. В папку print будет сохраняться итоговый PDF документ.