Статьи

Использование Java Deployment Toolkit с апплетами JavaFX

Во-первых, позвольте мне извиниться за воскрешение очень скромной программы JavaFX, показанной ниже, но я хочу сохранить этот пример очень лаконичным. Это позволит вам использовать его как «начальный код» для развертывания апплета JavaFX. Примечание: чтобы увидеть больше функциональных программ на JavaFX, пожалуйста, смотрите статьи в категории JFX Custom Nodes .

BindToFunctionApplet_SDK_Preview

Примечание: спасибо читателю «mbien» за то, что он указал, что цвета оригинального апплета в этом посте были отвратительными (мои слова). Затем я проконсультировался с графическим дизайнером Марком Дингманом из Malden Labs, который дал мне графический макет, из которого я создал вышеуказанный апплет.   Вот код для этого апплета, обновленный для предварительного просмотра JavaFX SDK:

/*
* BindToFunctionApplet.fx - A compiled JavaFX program that demonstrates
* how to create JavaFX applets.
* It also demonstrates binding to a function.
*
* Developed 2008 by Jim Weaver (development) and Mark Dingman (graphic design)
* to serve as a JavaFX Script example.
*/
package com.javafxpert.bind_to_function;

import javafx.application.*;
import javafx.ext.swing.*;
import javafx.scene.*;
import javafx.scene.geometry.*;
import javafx.scene.paint.*;
import javafx.scene.text.*;
import javafx.scene.transform.*;
import java.lang.Math;

class CircleModel {
attribute diameter:Integer;

bound function getArea():Number {
Math.PI * Math.pow(diameter / 2, 2);
}
}

Application {
var cModel = CircleModel {};
var componentViewRef:ComponentView;
var stageRef:Stage;
stage:
stageRef = Stage {
var labelFont = Font {
name: "Sans Serif"
style: FontStyle.PLAIN
size: 32
}
fill:
LinearGradient {
startX: 0.0
startY: 0.0
endX: 0.0
endY: 1.0
stops: [
Stop {
offset: 0.0
color: Color.rgb(0, 168, 255)
},
Stop {
offset: 1.0
color: Color.rgb(0, 65, 103)
}
]
}
content: [
Circle {
centerX: 250
centerY: 250
radius: bind cModel.diameter / 2
fill:
LinearGradient {
startX: 0.0
startY: 0.0
endX: 0.0
endY: 1.0
stops: [
Stop {
offset: 0.0
color: Color.rgb(74, 74, 74)
},
Stop {
offset: 1.0
color: Color.rgb(9, 9, 9)
}
]
}
},
Text {
font: labelFont
x: 30
y: 70
fill: Color.BLACK
content: bind "Diameter: {cModel.diameter}"
},
Text {
font: labelFont
x: 260
y: 70
fill: Color.BLACK
content: bind "Area: {%3.2f cModel.getArea()}"
},
componentViewRef = ComponentView {
transform: bind
Translate.translate(40, stageRef.height - 30 -
componentViewRef.getHeight())
component:
Slider {
minimum: 0
maximum: 400
preferredSize: bind [stageRef.width - 80, 20]
value: bind cModel.diameter with inverse
}
}
]
}
}

Зачем использовать Java Deployment Toolkit для апплетов Java?

Согласно обзорной странице Sun Deployment Toolkit от Sun , «на настольных клиентах установлено большое разнообразие платформ Java, от Microsft VM до последних обновлений Java SE 6 от Sun. Они работают под управлением различных операционных систем от Sun, Microsoft, Apple, Red Hat и других. и подключены к Интернету с широким диапазоном скоростей соединения.Как поставщики контента могут доставлять контент Java всем этим клиентам с наилучшим возможным пользовательским интерфейсом?

Различные источники опубликовали методы JavaScript для обнаружения и развертывания платформы Java для использования. с помощью апплетов Java Plug-In и приложений Java Web Start. Эти сценарии обычно имеют серьезные ограничения и не поддерживают различные комбинации параметров браузера, ОС и конфигурации, имеющиеся на современных клиентах.

Java Deployment Toolkit позволяет разработчикам легко развертывать апплеты и приложения для большого числа клиентов с помощью скриптов JavaScripts. В нем также содержатся рекомендации по использованию некоторых из наиболее мощных функций, доступных в Java Web Start и Java Plug-In, а также краткие сведения о различиях между этими двумя средствами развертывания. «

В двух словах, Java Deployment Toolkit — это библиотека JavaScript, поддерживаемая Sun и всегда доступная во время выполнения вашим HTML-кодом. В этой библиотеке есть несколько методов, которые выполняют такие задачи, как определение инфраструктуры Java и установка JRE на клиентских компьютерах. Мы будем использовать один из этих методов, а именно runApplet , для запуска апплета JavaFX с указанной минимальной версией JRE. Вот код HTML и JavaScript, который я использую для развертывания сегодняшнего примера апплета:

<html>
<script src="http://java.com/js/deployJava.js"></script>
<script>
var attributes = {codebase:'http://jmentor.com/JFX/BindToFunctionApplet',
code:'javafx.application.Applet.class',
archive:'BindToFunctionApplet.jar, javafxrt.jar, Scenario.jar, javafxgui.jar, javafx-swing.jar',
width:500, height:500, java_arguments:'-Djnlp.packEnabled=true'};
var parameters = {"ApplicationClass":"com.javafxpert.bind_to_function.BindToFunctionApplet",
"draggable":"true"};
var version = '1.6.0' ;
deployJava.runApplet(attributes, parameters, version);
</script>
</html>

Обратите внимание, что приведенный выше код позволяет перетаскивать апплет на рабочий стол, а также использовать файлы JAR в формате Pack200, если на клиентском компьютере установлено обновление 10 Java Java SE.  Поверни апплет, чтобы увидеть поведение его развертывания на твоей машине. Кстати, в соответствии с документацией по плагину Java SE 6 Update 10 «по умолчанию жест для перетаскивания апплета из веб-браузера — это Alt + левый щелчок + перетаскивание».

Спасибо,
Джим Уивер
JavaFXpert.com блог