JavaFX в действии

В то время как Flash и Silverlight достаточно интенсивно освещаются компьютерной прессой, конкурирующая с ними технология JavaFX по какой-то причине не столь полюбилась журналистам. "Компьютерные вести" исправляют такое положение вещей и предлагают вашему вниманию рассказ о практическом использовании этой многообещающей технологии.


Введение

Поскольку в прошлом номере "Компьютерных вестей" я уже рассказывал о том, что именно скрывается за названием JavaFX, повторяться не буду. Напомню лишь, что это технология построения RIA-приложений, предложенная компанией Sun Microsystems.

Самый важный вопрос, на который следует ответить, - чем JavaFX отличается от Java? Если отвечать на него кратко, то ответ будет простым: всем. Начиная хотя бы уже с того, что в JavaFX используется в качестве языка программирования не Java, а специальный JavaFX Script. Конечно, это не означает, что в JavaFX-приложениях вы не можете использовать код на Java.

Второй важный вопрос, который касается JavaFX, состоит в отличиях этой платформы от Flex и Silverlight. Отличие, в основном, в том, к каким платформам и инструментам привыкли разные разработчики. Если вам ближе Flash, то удобнее будет с Flex'ом, если .NET - с Silverlight'ом, ну а для тех, кто привык иметь дело с Java, как раз будет удобнее JavaFX. Конечно, когда речь заходит о мелочах, отличий выявляется больше, но если смотреть на эти платформы, что называется, с высоты птичьего полёта, то по своим возможностям они примерно равны.

 


Инструменты

Что ж, давайте приступим к непосредственному знакомству с JavaFX. Для того, чтобы оно состоялось, нам с вами нужно будет скачать и установить инструменты, без которых программирование на JavaFX попросту невозможно.

Первый - это, конечно же, JDK (Java Development Kit). Хотя JavaFX и Java, как я только что говорил, довольно существенно друг от друга отличаются, всё-таки в основе первого лежит второе, а потому без JDK, более того - одним JDK, в силу упомянутых различий, обойтись не удастся. Поэтому нам с вами понадобится ещё и JavaFX SDK. По идее, должно хватить и отдельного компилятора JavaFX Script'а, но, честно говоря, не думаю, что это будет намного удобнее, чем использовать SDK. И JDK, и JavaFX SDK можно найти на сайте компании Sun Microsystems, так что не буду приводить полные ссылки, чтобы не загромождать статью.

Ещё, пожалуй, неплохо бы заиметь какую-нибудь среду разработки, которая позволила бы создавать приложения с использованием JavaFX с максимально возможным комфортом. В настоящее время есть возможность использования JavaFX как в NetBeans, так и в Eclipse. И саму среду NetBeans, и плагин для Eclipse можно найти на сайте www.javafx.com. Что касается такой популярной среды, как IDEA (многим она нравится больше, чем Eclipse, и я догадываюсь, почему), то для неё плагина, который позволил бы добавить поддержку JavaFX в эту среду, пока ещё нет.


Скриптовый язык JavaFX: знакомство, или "Hello World"

Что ж, считаем, что всё, что нужно было, вы установили, и теперь можно знакомиться с самим скриптовым языком, который используется при создании JavaFX-приложений. Он, в целом, достаточно похож на Java в плане синтаксиса написания кода, однако, конечно, различий тоже море.

Первое отличие - это декларативность языка. JavaFX Script - язык, "заточенный" под создание интерфейсов, а не под решение общих задач различного порядка, как Java. Соответственно, описания интерфейса в JavaFX выглядят довольно просто. Вы можете увидеть традиционное "Hello World"-приложение в листинге.

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
Stage {
 title: "Hello World"
 width: 250
 height: 80
 scene: Scene {
  content: Text {
   font : Font {
    size : 24
   }
   x: 10, y: 30
   content: "Hello World"
  }
 }
}

Обратите внимание, что благодаря декларативному характеру языка в этом листинге нет ни одной строчки кода, которая выполняла бы какую-либо инструкцию, однако, несмотря на это, программа делает то же самое, что должна делать любая программа из разряда "Hello World" - то есть, выводит пользователю эту фразу в качестве приветствия.


Переменные и функции

Впрочем, всё это не означает, что в JavaFX нельзя писать обычный, нормальный программный код, который делает что-то полезное. В JavaFX, как и в любом другом языке программирования, есть такие вещи, как переменные и функции.

Переменные в JavaFX объявляются с помощью ключевых слов var и def. Например, так: "def const1 = 100; var variable1; var variable2" (без кавычек, естественно). Чем отличаются эти объявления? В принципе, думаю, разница вполне очевидна. Хотя в терминах JavaFX всё это - переменные, на практике получается, что то, что объявляется с помощью def, является переменной, которая не может изменять своё значение, сиречь константой. То, что объявляется с помощью var, напротив, и пахнет как переменная, и ведёт себя соответствующим образом.

Кстати, хочу отметить, что и в именах переменных, и в именных функций в JavaFX используются те же соглашения, что и в Java - то есть, когда название переменной или функции содержит в себе несколько слов, то первое пишется со строчной буквы, а остальные - с прописной. Например: thisIsVariable, thisIsFunction.

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

function add(argOne: Integer, argTwo: Integer) : Integer {
 result = argOne + argTwo;
 println("{argOne} + {argTwo} = {result}");
 return result;
}

В нём вы можете увидеть функцию, занимающуюся суммированием двух чисел и выводом результата на экран.


Объекты

Говорим Java - подразумеваем объектно-ориентированное программирование. Говорим JavaFX... Хм, что-то ООП до сих пор мы здесь не видели. Неужели после Java в Sun Microsystems решили сделать чисто процедурный язык? То есть, простите, процедурно-декларативный. Оказывается, не совсем. Без объектов в современном ИТ-мире ни туда, ни сюда. Никуда от них не деться и тем, кто решил использовать в своей работе JavaFX.

Надо сказать, что объекты в JavaFX и объекты в Java внешне более чем похожи. И тут, и там они являются экземплярами особых типов данных - классов. Разница в объявлении классов состоит, пожалуй, только в различном объявлении их членов - вместо C-подобных "int i" в Java мы видим паскалевские "var i: integer". Пример класса, написанного на JavaFX Script'е, можно увидеть в листинге.

class Customer {
 var firstName: String;
 var lastName: String;
 var phoneNum: String;
 var address: Address;
 function printName() {
  println("Name: {firstName} {lastName}");
 }
 function printPhoneNum(){
  println("Phone: {phoneNum}");
 }
 function printAddress(){
  println("Street: {address.street}");
  println("City: {address.city}");
  println("State: {address.state}");
  println("Zip: {address.zip}");
 }
}

Классы можно наследовать друг от друга (к счастью, как и в Java, наследование одиночное). Можно переопределять методы и делать прочие вещи, к которым привыкли те, кто привык к объектно-ориентированному стилю программирования. Есть и привычные по Java модификаторы доступа protected и public. Есть и другие, не менее полезные - public-read и public-init. Как написано в официальной документации, "модификатор доступа public-read определяет переменную, которая доступна для чтения отовсюду, но для записи (по умолчанию) доступна только из текущего скрипта. Модификатор доступа public-init определяет переменную, которая может быть публично инициализирована объектной константой, содержащейся в любом пакете".

Больше всего из того, что связано с классами, мне в JavaFX понравились объявления экземпляров классов. Фактически, мы с вами уже с ним сталкивались - в том самом приложении "Hello World", которое можно увидеть в первом листинге. В листинге можно увидеть аналогичное объявление для экземпляра только что рассмотренного класса Customer из предыдущего примера.

def customer = Customer {
 firstName: "John";
 lastName: "Doe";
 phoneNum: "(408) 555-1212"
 address: Address {
  street: "1 Main Street";
  city: "Santa Clara";
  state: "CA";
  zip: "95050";
 }
}


Промежуточные итоги

Что ж, давайте подведём итоги - пока что промежуточные - тому, что было сказано выше о JavaFX. Почему промежуточные? Потому что мы с вами ещё продолжим увлекательный разговор о JavaFX - ведь, фактически, мы только начали знакомство с этой интересной и перспективной технологией и даже до конца не успели рассмотреть скриптовый язык, лежащий в её основе.

Язык этот, как видите, отличается от Java, однако, к счастью, эти отличия не делают его сложным для понимания и использования. Как и Java, JavaFX Script предлагает удобные средства работы с объектами, но при этом имеет очень интересные декларативные возможности, которые наверняка не останутся невостребованными при реальном создании RIA-приложений. В общем и целом, можно сказать, что JavaFX Script так же прост и так же эффективен, как и сама Java. И, наверное, было бы даже странно, если бы у компании, сумевшей в своё время создать такой великий язык программирования, как Java, скриптовый язык для RIA-приложений получился бы откровенно слабым.

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

Версия для печатиВерсия для печати

Номер: 

17 за 2009 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Аватар пользователя Serg
Спасибо за хорошую статью. Кратко и познавательно. Как раз то, что хотел узнать про этот язык для начала, не больше ни меньше.