Для начала необходимо скачать и настроить компилятор.
Скачать последню версию компилятора можно по ссылке : archive.zip(12Мб)
- распакуйте архив в удобную для вас папку
- добавьте полный путь к папке openjfx-compiler\dist\bin\ в перменную PATH
Откройте текстовый редактор и создайте в нём файл HelloWorld.fx
import javafx.application.Frame;
import javafx.application.Stage;
import javafx.scene.text.Text;
Frame {
title: "Hello JavaFX Script"
width: 300
height: 100
stage:Stage {
content: [
Text {
x: 100, y: 30
content: "Hello world"
}
]
}
visible: true
}
Сохраните файл, скомпилируйте и выполните его с помощью следующих команд:
>javafxc HelloWorld.fx
>javafx HelloWorld
Внимание, на вашем компьютере должно быть установлено JDK версии не менее 1.6 для успешного работы Java FX.
Итак, приложение создало окно (Frame) указанных размров c заголовком Hello JavaFX Script и текстом Hello world посреди окна.
Другие римеры на Java FX
Tesla Demo
SVG to Java FX Translator Demo
(примеры загружаются через Java Web Start)
Source:
Open Java FX
JavaFX по русски
30 июля 2008
16 июля 2008
23 июня 2008
Spring MVC
Spring MVC - это реализация шаблона MVC (модель - представление - контроллер) в Spring Framework.
Используется для создания Web приложений.
Для создания приложения первого приложения вам не помешает скачать
необходимые библиотеки из оффициального сайта Spring.
Во время написания заметки самой новой версией была 2.5.4 ею и предлагаю воспользоваться.
Также вам на первых порах не помешают следующие библиотеки:
commons-logging-1.1.jar
jstl.jar, standard.jar
Свой "hello world" я создавать не буду, таких достаточно в интернете, напрмер
можно воспользоваться одним из следующих туториалов:
http://mhimu.wordpress.com/2007/11/27/spring-mvc-tutorial/ (англ.)
http://artamonov.ru/2006/03/15/prostoe-prilozhenie-na-spring/ (рус.)
Используется для создания Web приложений.
Для создания приложения первого приложения вам не помешает скачать
необходимые библиотеки из оффициального сайта Spring.
Во время написания заметки самой новой версией была 2.5.4 ею и предлагаю воспользоваться.
Также вам на первых порах не помешают следующие библиотеки:
commons-logging-1.1.jar
jstl.jar, standard.jar
Свой "hello world" я создавать не буду, таких достаточно в интернете, напрмер
можно воспользоваться одним из следующих туториалов:
http://mhimu.wordpress.com/2007/11/27/spring-mvc-tutorial/ (англ.)
http://artamonov.ru/2006/03/15/prostoe-prilozhenie-na-spring/ (рус.)
17 июня 2008
Eclipse IDE и Spring Framework
Для удобства разработки приложений с использованием Spring Framework существует проект Spring IDE.
Проект занимается разработкой Spring плагинов под Eclipse.
Установить плагины можно посредством добавления в Update Manager ссылки:
http://springide.org/updatesite
Требования плагинов:
Плагин Spring IDE Dependencies (only for Eclipse 3.2.x) не надо устанвливать на Eclipse 3.3 или более новые версии.
Проект занимается разработкой Spring плагинов под Eclipse.
Установить плагины можно посредством добавления в Update Manager ссылки:
http://springide.org/updatesite
Требования плагинов:
- Eclipse 3.2.x
- Web Tools 1.5.x
Плагин Spring IDE Dependencies (only for Eclipse 3.2.x) не надо устанвливать на Eclipse 3.3 или более новые версии.
16 июня 2008
Преобразование кодировок
Есть например у нас непонятная строка в непонятной кодировке :
привет
Определить в какой кодировке сейчас находиться строка и пере-конвертировать в
"правильную" кодировку можно с помощью следующего выражения:
строки:
result = new String(new String(some_string.getBytes(),from_enc).getBytes(to_enc));
где
some_string - строка с непонятной кодировкой
from_enc - текущая предположительная кодировка
to_enc - в какую кодировку следует преобразовать строку
например:
result = new String(new String("привет".getBytes(),"ASCII").getBytes("KOI8_R"));
Дополнение 1. Список кодировок, используемых в Java.
"ASCII",
"ISO8859_1","ISO8859_2","ISO8859_3","ISO8859_4","ISO8859_5",
"ISO8859_6","ISO8859_7","ISO8859_8","ISO8859_9",
"Big5",
"Cp037",
"Cp1006" ,"Cp1025","Cp1026","Cp1046","Cp1097","Cp1098",
"Cp1112" ,"Cp1122","Cp1123","Cp1124",
"Cp1250" ,"Cp1251","Cp1252","Cp1253","Cp1254","Cp1255",
"Cp1256" ,"Cp1257","Cp1258","Cp1381","Cp1383",
"Cp273" ,"Cp277" ,"Cp278" ,"Cp280" ,"Cp284" ,"Cp285","Cp297",
"Cp33722","Cp420" ,"Cp424" ,"Cp437" ,"Cp500" ,"Cp737","Cp775",
"Cp838" ,"Cp850" ,"Cp852" ,"Cp855" ,"Cp857" ,
"Cp860" ,"Cp861" ,"Cp862" ,"Cp863" ,"Cp864" ,"Cp865",
"Cp866" ,"Cp868" ,"Cp869" ,"Cp870" ,"Cp871" ,"Cp874","Cp875",
"Cp918" ,"Cp921" ,"Cp922" ,"Cp930" ,"Cp933" ,"Cp935","Cp937","Cp939",
"Cp942" ,"Cp948" ,"Cp949" ,"Cp950" ,"Cp964" ,"Cp970",
"EUC_CN","EUC_JP","EUC_KR","EUC_TW",
"GBK",
"ISO2022CN_CNS","ISO2022JP","ISO2022KR",
"JIS0201","JIS0208","JIS0212",
"KOI8_R",
"MS874",
"MacArabic","MacCentralEurope","MacCroatian","MacCyrillic",
"MacDingbat","MacGreek","MacHebrew","MacIceland","MacRoman",
"MacRomania","MacSymbol","MacThai","MacTurkish","MacUkraine",
"SJIS",
"UTF8","UTF-16","UnicodeBig","UnicodeLittle"
P.s. жду ваших коментариев, а также вариантов, что это за "закодированое" слово.
привет
Определить в какой кодировке сейчас находиться строка и пере-конвертировать в
"правильную" кодировку можно с помощью следующего выражения:
строки:
result = new String(new String(some_string.getBytes(),from_enc).getBytes(to_enc));
где
some_string - строка с непонятной кодировкой
from_enc - текущая предположительная кодировка
to_enc - в какую кодировку следует преобразовать строку
например:
result = new String(new String("привет".getBytes(),"ASCII").getBytes("KOI8_R"));
Дополнение 1. Список кодировок, используемых в Java.
"ASCII",
"ISO8859_1","ISO8859_2","ISO8859_3","ISO8859_4","ISO8859_5",
"ISO8859_6","ISO8859_7","ISO8859_8","ISO8859_9",
"Big5",
"Cp037",
"Cp1006" ,"Cp1025","Cp1026","Cp1046","Cp1097","Cp1098",
"Cp1112" ,"Cp1122","Cp1123","Cp1124",
"Cp1250" ,"Cp1251","Cp1252","Cp1253","Cp1254","Cp1255",
"Cp1256" ,"Cp1257","Cp1258","Cp1381","Cp1383",
"Cp273" ,"Cp277" ,"Cp278" ,"Cp280" ,"Cp284" ,"Cp285","Cp297",
"Cp33722","Cp420" ,"Cp424" ,"Cp437" ,"Cp500" ,"Cp737","Cp775",
"Cp838" ,"Cp850" ,"Cp852" ,"Cp855" ,"Cp857" ,
"Cp860" ,"Cp861" ,"Cp862" ,"Cp863" ,"Cp864" ,"Cp865",
"Cp866" ,"Cp868" ,"Cp869" ,"Cp870" ,"Cp871" ,"Cp874","Cp875",
"Cp918" ,"Cp921" ,"Cp922" ,"Cp930" ,"Cp933" ,"Cp935","Cp937","Cp939",
"Cp942" ,"Cp948" ,"Cp949" ,"Cp950" ,"Cp964" ,"Cp970",
"EUC_CN","EUC_JP","EUC_KR","EUC_TW",
"GBK",
"ISO2022CN_CNS","ISO2022JP","ISO2022KR",
"JIS0201","JIS0208","JIS0212",
"KOI8_R",
"MS874",
"MacArabic","MacCentralEurope","MacCroatian","MacCyrillic",
"MacDingbat","MacGreek","MacHebrew","MacIceland","MacRoman",
"MacRomania","MacSymbol","MacThai","MacTurkish","MacUkraine",
"SJIS",
"UTF8","UTF-16","UnicodeBig","UnicodeLittle"
P.s. жду ваших коментариев, а также вариантов, что это за "закодированое" слово.
13 июня 2008
RPM Команды
В данной статье будет рассмотрена утилита rpm (Red Hat Package Manager), незаменимая вешь в Linux.
Программа позволяет устанавливать, удалять и обновлять программное обеспечение.
Установка нового пакета из файла либо удалённого сервера :
# rpm -ivh foo-2.0-4.i386.rpm
# rpm -i ftp://ftp.redhat.com/pub/redhat/RPMS/foo-1.0-1.i386.rpm
# rpm -i http://oss.oracle.com/projects/firewire/dist/files/kernel-2.4.20-18.10.1.i686.rpmОбновление пакета (rpm удалит предыдущую версию и установит новую):
# rpm -Uvh foo-1.0-2.i386.rpm
# rpm -Uvh ftp://ftp.redhat.com/pub/redhat/RPMS/foo-1.0-1.i386.rpm
# rpm -Uvh http://oss.oracle.com/projects/firewire/dist/files/kernel-2.4.20-18.10.1.i686.rpm
Удаление пакета:
# rpm -e foo
Получение списка установленных пакетов:
# rpm -qa Запрос пакета по имени (проверяем установлен ли такой пакет):
# rpm -q fooЗапрос информации о пакете:
# rpm -qi fooЗапрос всех файлов (их местонахождение в файловой системе) относящихся к пакету:
# rpm -ql fooЗапрос названия пакета к которому относится файл:
# rpm -qf /usr/bin/mysql
mysql-3.23.52-3
Запрос всех файлов, которые находятся в установочном файле (rpm):
# rpm -qpl kernel-2.4.20-18.10.1.i686.rpm
# rpm -qpl ftp://ftp.redhat.com/pub/redhat/RPMS/foo-1.0-1.i386.rpm
# rpm -qpl http://oss.oracle.com/projects/firewire/dist/files/kernel-2.4.20-18.10.1.i686.rpmПроверка корректности установленного пакета(результат - список файлов не прошедших тесты:
md5, проверка размера файлов):
# rpm --verify mysql
Проверка целостности и валидности PGP цифровой подписи пакета:
# rpm --checksig foo
Tips!
Если вы не знаете правильного название пакета, можно найти его по некоторому ключевому
слову (входящему в название), с помощью следующей команды:
rpm -ql | grep java
Выведет все пакеты в названиях которых присутствует слово java.
P.S.: Надеюсь при переходе с Windows на Linux вам это пригодится.
12 июня 2008
Установка Java Plugin для Firefox на Red Hat Linux
Первым делом нам надо установить JRE. Тут ничего сложного нету, скачиваем с сайта Sun выполняемый файл (например: jre-1_5_0_15-linux-i586.bin) и просто выполняем его в той директории, куда вы хотите установить JRE:
./jre-1_5_0_15-linux-i586.bin
Проверим правильность установки java, команда
java -version
должна вывести информацию о версии Java. Если этого не произошло, значит надо создать правильные ссылки:
ln -sf /path/to/installed/jre/bin/java /etc/alternatives/java
ln -sf /path/to/indtalled/jre /etc/alternatives/jre
ещё следует проверить ссылку /usr/bin/java , она должна указывать на /etc/alternatives/java .
С установкой Jre закончили. Переходим к настройке плагина.
Переходим в каталог с firefox plugins (например)
cd /usr/lib64/firefox/plugins
устанавливаем ссылку на библиотеку с плагином:
ln -sfi /path/to/jre/jre1.5.0_15/plugin/i386/ns7/libjavaplugin_oji.so
Внимание, не ставьте 64х битную версию Jre! Непонятно почему, но нужного плагина в той сборке нет.
Перезапускаем firefox.
В about:plugins должен появится Java Plugin.
Thats all,
folks.
./jre-1_5_0_15-linux-i586.bin
Проверим правильность установки java, команда
java -version
должна вывести информацию о версии Java. Если этого не произошло, значит надо создать правильные ссылки:
ln -sf /path/to/installed/jre/bin/java /etc/alternatives/java
ln -sf /path/to/indtalled/jre /etc/alternatives/jre
ещё следует проверить ссылку /usr/bin/java , она должна указывать на /etc/alternatives/java .
С установкой Jre закончили. Переходим к настройке плагина.
Переходим в каталог с firefox plugins (например)
cd /usr/lib64/firefox/plugins
устанавливаем ссылку на библиотеку с плагином:
ln -sfi /path/to/jre/jre1.5.0_15/plugin/i386/ns7/libjavaplugin_oji.so
Внимание, не ставьте 64х битную версию Jre! Непонятно почему, но нужного плагина в той сборке нет.
Перезапускаем firefox.
В about:plugins должен появится Java Plugin.
Thats all,
folks.
02 февраля 2008
Простейший пример JSP
Язык разметки JSP (JavaServer Pages), расширяющий язык HTML тегами вида
<% имя тега атрибуты %>
. С помощью этих тегов можно не только внести описания, выражения и
операторы Java, но и вставить в страницу файл с текстом или
изображение, вызвать объект Java или компонент JavaBean или даже
компонент EJB.
Можно также расширить стандартный набор тегов, своими собственными, custom tags.
Рассмотрим следующий простейший пример JSP страницы:
<head>
</head>
<body>
<table>
<tr>
<td>Hello</td><td><%= new String("world") %></td>
</tr>
<tr>
<td>Дата</td><td><%= new java.util.Date()%></td>
</tr>
<tr>
<td>Хост</td><td> <%out.println( request.getRemoteHost());%></td>
</tr>
</table>
</body>
</html>
Перед тестированием примера, вам понадобится скачать веб контейнер, например Apache Tomcat и установить его.
Переходим в домашнюю папку Apache Tomcat : \webapps\ROOT\
там создаём файлик my.jsp и сохраняем туда содержимое примера.
Запускаем tomcat сервер. Теперь наши пример доступен по адресу : http://localhost:8080/my.jsp.
Теперь немного про жизненный цикл Jsp страниц.
В веб контейнере есть специальный предпроцессор, который при первом же запросе к странице jsp автоматически обрабатывает её и превращает в обычный сервлет. Полученый в результате работы предпроцессора сервлет тут же компилируется и выполняется. Откомпилированный сервлет храниться в контейнере вместе со всеми остальными сервлетами. При следующих вызовах обращение будет напрямую передаватся скомпилированному сервлету, но если вы внесёте изменения в свою страницу и сохраните её - эти изменения приведут к перекомпиляции сервлета. Вы сможете сразу увидеть результат без перезагрузки сервера.
Для первого примера достаточно.
<% имя тега атрибуты %>
. С помощью этих тегов можно не только внести описания, выражения и
операторы Java, но и вставить в страницу файл с текстом или
изображение, вызвать объект Java или компонент JavaBean или даже
компонент EJB.
Можно также расширить стандартный набор тегов, своими собственными, custom tags.
Рассмотрим следующий простейший пример JSP страницы:
<head>
</head>
<body>
<table>
<tr>
<td>Hello</td><td><%= new String("world") %></td>
</tr>
<tr>
<td>Дата</td><td><%= new java.util.Date()%></td>
</tr>
<tr>
<td>Хост</td><td> <%out.println( request.getRemoteHost());%></td>
</tr>
</table>
</body>
</html>
Перед тестированием примера, вам понадобится скачать веб контейнер, например Apache Tomcat и установить его.
Переходим в домашнюю папку Apache Tomcat : \webapps\ROOT\
там создаём файлик my.jsp и сохраняем туда содержимое примера.
Запускаем tomcat сервер. Теперь наши пример доступен по адресу : http://localhost:8080/my.jsp.
Теперь немного про жизненный цикл Jsp страниц.
В веб контейнере есть специальный предпроцессор, который при первом же запросе к странице jsp автоматически обрабатывает её и превращает в обычный сервлет. Полученый в результате работы предпроцессора сервлет тут же компилируется и выполняется. Откомпилированный сервлет храниться в контейнере вместе со всеми остальными сервлетами. При следующих вызовах обращение будет напрямую передаватся скомпилированному сервлету, но если вы внесёте изменения в свою страницу и сохраните её - эти изменения приведут к перекомпиляции сервлета. Вы сможете сразу увидеть результат без перезагрузки сервера.
Для первого примера достаточно.
29 января 2008
Админка на Jsp & Jstl
Создан небольшой пример, который позволит новичкам познакомится с технологиями написания web приложений на java.
Скачать можно тут.
Для работы с примером нам потребуется веб контейнер, например Tomcat6, который можно скачать с официального сайта Apache Tomcat.
После инсталяции Веб контейнера, установите war файл примера на сервер (deploy).
Данный пример состоит из трёх jsp файлов, а также двух вспомогательных классов:
index.jsp - главная страница, проводит авторизацию пользователей, только авторизованные пользователи получают доступ к нашей админке.
users.jsp - список пользователей, которые имеют доступ к админке, лишних пользователей можно удалить.
adduser.jsp - форма, где можно создать нового пользователя.
Список пользователей хранится в хмл файле users.xml. Каждый пользователь имеет свой логин и пароль.
По умолчанию существует пользователь с логином: "admin", пароль: "admin";
замечание! Это учебный пример, поэтому для наглядности реализована минимальная функциональность для корректной работы.
Знакомимся с примером и задаём вопросы, указываем на замечания.
Скачать можно тут.
Для работы с примером нам потребуется веб контейнер, например Tomcat6, который можно скачать с официального сайта Apache Tomcat.
После инсталяции Веб контейнера, установите war файл примера на сервер (deploy).
Данный пример состоит из трёх jsp файлов, а также двух вспомогательных классов:
index.jsp - главная страница, проводит авторизацию пользователей, только авторизованные пользователи получают доступ к нашей админке.
users.jsp - список пользователей, которые имеют доступ к админке, лишних пользователей можно удалить.
adduser.jsp - форма, где можно создать нового пользователя.
Список пользователей хранится в хмл файле users.xml. Каждый пользователь имеет свой логин и пароль.
По умолчанию существует пользователь с логином: "admin", пароль: "admin";
замечание! Это учебный пример, поэтому для наглядности реализована минимальная функциональность для корректной работы.
Знакомимся с примером и задаём вопросы, указываем на замечания.
25 января 2008
java.util LinkedList
Решил познакомится поближе с возможностями данного класса.
LinkedList - это реализация интерфейса List, которая реализует все операции списка и позволяет добавлять любые элементы (включая null). Кроме реализации интерфейса List , LinkedList реализует методы получения, удаления и вставки в начало и конец списка. Такие операции позволяют использовать рассматриваемый класс как стек, очередь и двухсторонняя очередь.
Единственный негативный момент в том, что LinkedList является не синхронизированной. Тоесть при доступе к одному объекту LinkedList из нескольких потоков, необходимо, внешними средствами синхронизовать этот объект. Например создать объект, который будет инкапсулировать наш объект и отвечает за синхронизацию синхронизацию:
List list = Collections.synchronizedList(new LinkedList(...));
Так теперь перейдём к примерам.
1. Создание стека с помощью LinkedList :
import java.util.LinkedList;
public class MainClass {
public static void main(String[] args) {
StackL stack = new StackL();
stack.push("First In");
stack.push("Second In");
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
class StackL {
private LinkedList list = new LinkedList();
public void push(Object v) {
list.addFirst(v);
} public Object pop() {
return list.removeFirst();
}
}
Как известно стек работает по принципу FILO (first in last out), так что результат работы нашего примера:
>Second In
>First In
2. Создание очереди с помощью LinkedList:
import java.util.LinkedList ;
public class Queue {
private LinkedList list = new LinkedList();
public void put(Object v) {
list.addFirst(v);
}
public Object get() {
return list.removeLast();
}
public boolean isEmpty() {
return list.isEmpty();
}
public static void main(String[] args) {
Queue queue = new Queue();
for(int i = 0; i < 10; i++)
queue.put(Integer.toString(i));
while(!queue.isEmpty())
System.out.println(queue.get());
}
}
В данном примере реализован принцип очереди: FIFO (first in first out).
Как вы заметили в этих примерах были ограничены возможности класса LinkedList, потому что он (LinkedList) имеет в своём арсенале методы реализующие и стек и очередь и двухсторонню очередь.
LinkedList - это реализация интерфейса List, которая реализует все операции списка и позволяет добавлять любые элементы (включая null). Кроме реализации интерфейса List , LinkedList реализует методы получения, удаления и вставки в начало и конец списка. Такие операции позволяют использовать рассматриваемый класс как стек, очередь и двухсторонняя очередь.
Единственный негативный момент в том, что LinkedList является не синхронизированной. Тоесть при доступе к одному объекту LinkedList из нескольких потоков, необходимо, внешними средствами синхронизовать этот объект. Например создать объект, который будет инкапсулировать наш объект и отвечает за синхронизацию синхронизацию:
List list = Collections.synchronizedList(new LinkedList(...));
Так теперь перейдём к примерам.
1. Создание стека с помощью LinkedList :
import java.util.LinkedList;
public class MainClass {
public static void main(String[] args) {
StackL stack = new StackL();
stack.push("First In");
stack.push("Second In");
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
class StackL {
private LinkedList list = new LinkedList();
public void push(Object v) {
list.addFirst(v);
} public Object pop() {
return list.removeFirst();
}
}
Как известно стек работает по принципу FILO (first in last out), так что результат работы нашего примера:
>Second In
>First In
2. Создание очереди с помощью LinkedList:
import java.util.LinkedList ;
public class Queue {
private LinkedList list = new LinkedList();
public void put(Object v) {
list.addFirst(v);
}
public Object get() {
return list.removeLast();
}
public boolean isEmpty() {
return list.isEmpty();
}
public static void main(String[] args) {
Queue queue = new Queue();
for(int i = 0; i < 10; i++)
queue.put(Integer.toString(i));
while(!queue.isEmpty())
System.out.println(queue.get());
}
}
В данном примере реализован принцип очереди: FIFO (first in first out).
Как вы заметили в этих примерах были ограничены возможности класса LinkedList, потому что он (LinkedList) имеет в своём арсенале методы реализующие и стек и очередь и двухсторонню очередь.
Подписаться на:
Сообщения (Atom)