**JavaFX Script** یک زبان اسکریپت‌نویسی بود که به‌عنوان بخشی از خانواده‌ فناوری‌های JavaFX در پلتفرم جاوا توسط شرکت Sun Microsystems طراحی شده بود.

JavaFX دامنه‌ برنامه‌های غنی اینترنتی که در توسعه‌ سریع برنامه‌هایی با جلوه‌ بصری غنی برای بازارهای دسکتاپ و تلفن همراه تخصص دارد را (در رقابت با Adobe Flex و Microsoft Silverlight) مورد هدف قرار داد. JavaFX در محیط‌های توسعه‌ی یکپارچه همانند NetBeans, Eclipse و IntelliJ IDEA کار می‌کند. JavaFX تحت پروانه جامع همگانی GNU، از طریق پروژه‌ OpenJFX که تحت حمایت شرکت Sun است منتظر شده است.

تاریخ
-----

JavaFX Script در گذشته به‌عنوان **F3** شناخته می‌شد، که مخفف عبارت **F**orm **F**ollows **F**unction (اصل تبعیت فرم از کارکرد)‌ بود. زبان F3 توسط کریس الیور توسعه داده شده بود, که بعد از خریده شدن شرکت SeeBeyond Technology Corporation توسط Sun در سپتامبر 2005،‌ کارمندی از آن شرکت شد.

نام F3 بعداً به JavaFX Script تغییر کرد، و در سال 2007 در کنفرانس JavaOne،‌ منبع باز شد.

نسخه‌ی 1.0 از JavaFX در 4 دسامبر 2008 منتشر شد. در 10 سپتامبر 2010، شرکت اوراکل در کنفرانس JavaOne اعلام کرد که JavaFX Script متوقف خواهد شد، هرچند که JavaFX API برای زبان‌های دیگر در ماشین مجازی جاوا یا JVM در دسترس قرار خواهد گرفت.

در 27 سپتامبر 2010، استیون چین Visage را به‌عنوان یک زبان رابط کاربری اظهاری (declarative user-interface language) که براساس JavaFX Script به‌ همراه پیشرفت‌هایی ساخته شده بود را معرفی کرد.

در 8 آوریل 2012، پروژه‌ای با هدف احیا و تقویت زبان برنامه‌نویسی اصلی F3 ایجاد شد، اما به نظر می‌رسد که این پروژه در آگوست 2015 متوقف شده است

ویژگی‌ها
--------

JavaFX Script یک زبان اسکریپت‌نویسی کامپایل شده، به‌ حالت تایپ ایستا (statically typed)، و اعلانی (declarative) برای پلتفرم جاوا بود. این زبان قابلیت‌هایی نظیر اتصال خودکار داده‌ها، محرک‌های جهش (**Mutation trigger)** و انیمیشن اعلامی (Declarative animation) را با استفاده از نحو زبان بیان ارائه می‌کرد. (تمامی بلاک‌های کد به‌طور بالقوه امکان ارائه‌ مقادیر را دارند.)

از طریق APIهای استاندارد خود به‌نام JavaFX، از گرافیک‌های برداری «حالت حفظ شده»، پخش ویدیو و مولفه‌های استاندارد Swing پشتیبانی می‌کرد.

اگرچه F3 کار خود را به‌عنوان یک زبان تفسیری آغاز کرد، قبل از پخش اولین نسخه‌ی پیش‌نمایش در سه ماهه سوم 2008، JavaFX Script عمدتاً تمرکز خود را به یک زبان کامپایل شده بودن تغییر داده بود. نوشتن JavaFX Script تفسیر شده هنوز از طریق پل JSR 223 'اسکریپت‌نویسی برای جاوا' امکان پذیر است. از آنجایی که JavaFX Script بر روی پلتفرم جاوا ساخته شده است، استفاده از کلاس‌های جاوا در کد JavaFX Script آسان است. اسکریپت کامپایل شده JavaFX امکان اجرا شدن روی هر پلتفرمی که Java Runtime روی آن نصب شده است را داشت.

نحو (Syntax)
------------

سبک اعلانی JavaFX Script برای ساخت رابط‌های کاربری، می‌تواند کدهای کوتاه‌تر و خواناتری را ارائه دهد، نسبت به روش‌ پیچیده‌ و پرپشت فراخوانی متودهای مورد نیاز برای ساخت یک رابط معادل که به سبک رویه‌ای JavaFX Script نوشته شده است.

یک برنامه ساده Hello world نوشته شده در JavaFX Script به‌صورت زیر است:

```
 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"
 }
 } 
 }

```
و پنجره/قاب زیر را نشان می‌دهد:

این برنامه همچنین می‌تواند در JavaFX Script با استفاده از سبک رویه‌ای (procedural) به صورت زیر نوشته شود:

```
 import javafx.stage.Stage;
 import javafx.scene.Scene;
 import javafx.scene.text.Text;
 import javafx.scene.text.Font;

 javafx.scene.text.Font".
 var myFont:Font = Font.font(null, 24);

 var myText:Text = new Text();
 myText.font = myFont;
 myText.x = 10;
 myText.y = 30;
 myText.content = "Hello World";

 var myScene:Scene = new Scene();
 myScene.content = myText;

 var myStage:Stage = new Stage();
 myStage.title = "Hello World";
 myStage.width = 250;
 myStage.height = 80;
 myStage.scene = myScene;

```

منابع
-----



1. ↑  JavaFX 1.0 released
2. ↑  JavaFX 2010-2011 Roadmap بایگانی‌شده در ۲۰۱۰-۱۰-۲۹ توسط Wayback Machine
3. ↑  "Steve On Java » Announcing Visage – The DSL for Writing UIs". *steveonjava.com*. Archived from the original on 2010-10-01.
4. ↑  unktomi (2022-07-31), *unktomi/form-follows-function*, retrieved 2023-03-30