Fandom

Mini-Wikia

Fantom-DE/Erste Schritte

< Fantom-DE

1.771Seiten in
diesem Wiki
Seite hinzufügen
Diskussion0 Share

Störung durch Adblocker erkannt!


Wikia ist eine gebührenfreie Seite, die sich durch Werbung finanziert. Benutzer, die Adblocker einsetzen, haben eine modifizierte Ansicht der Seite.

Wikia ist nicht verfügbar, wenn du weitere Modifikationen in dem Adblocker-Programm gemacht hast. Wenn du sie entfernst, dann wird die Seite ohne Probleme geladen.

Fantom installieren und ausprobieren

Bevor wir mit Fantom arbeiten können, müssen wir es installieren und konfigurieren. Normalerweise ist dies mit wenigen Handgriffen getan; trotzdem wollen wir hier verschiedene Möglichkeiten etwas ausführlicher darstellen. Anschließend zeigen wir anhand von fünf verschiedenen Versionen von "Hello World", wie man ein Fantom-Programm als Shell-Anweisung, als Script, als Konsolenanwendung, als Bildschirmanwendung und als Web-Anwendung starten kann.

Vorbereitungen

Voraussetzungen

Im Prinzip können Sie Fantom-Programme auf allen Betriebssystemen laufen lassen, auf denen Java installiert ist, sowie unter Microsoft Windows. Im folgenden ist die Installation und Konfiguration für Unix (incl. Linux und Max OSX) und Windows erklärt.

Wenn Sie Unix verwenden, sollten Sie eine aktuelle Version der Java-Laufzeitumgebung (JRE) installiert haben. Ob dies der Fall ist, können Sie daran erkennen, ob im Konsolenfenster der Befehl java -version etwas Vernünftiges hervorbringt.

Unter Windows wird Java nicht unbedingt benötigt, da Fantom auch auf der .NET-CLR betrieben werden kann. Das setzt natürlich voraus, dass Sie .NET auf dem Rechner haben, wovon man bei aktuell gehaltenen PCs aber im Allgemeinen ausgegehen können sollte.

Sie können Fantom aber auch auf einem Windows-Rechner unter Java betreiben, und dies ist (zumindest wenn man die Wahl hat) auch zu empfehlen, denn die Java-Anpassung ist in mancher Hinsicht in der Regel etwas weiter entwickelt als die .NET-Anpassung.

Fantom unter Unix mit dem .NET-Clone Mono zu betreiben ist derzeit noch nicht möglich.

Fantom herunterladen

Laden Sie die neueste Fantom-Version von der Download-Site des Google-Code-Projekts herunter: http://code.google.com/p/fan/downloads/list.

Entpacken Sie die ZIP-Datei an einem geeigneten Ort auf der Festplatte, z.B. unter Windows in C:\apps. Bei der Fantom-Version 1.0.57 haben Sie dann also ein Verzeichnis C:\apps\fantom-1.0.57. Unter Unix könnte das analoge Verzeichnis /apps/fantom/bin heißen. Dieses Verzeichnis bezeichnen wir im Folgenden als Installationsverzeichnis.

Konfigurieren unter Unix

Unter Unix definieren Sie sich sinnvollerweise einen versionsunabhängigen symbolischen Link auf das Installationsverzeichnis, damit Sie nicht bei jedem Versionswechsel alles Mögliche anpassen müssen und trotzdem mehrere Versionen parallel verwenden zu können:

> ln -s /apps/fantom /apps/fantom/fantom-1.0.57 

Dann sollten Sie sich in Ihrem Startup-Script noch eine Umgebungsvariable fan_home machen, die auf das Installationsverzeichnis verweist, und das Unterverzeichnis bin zur Pfadvariablen hinzufügen:

fan_home=/apps/fantom
PATH=$PATH:$fan_home/bin

Die Fantom-Startprogramme sind als eine Reihe von Bash-Shellscripts implementiert, die alle an eine gemeinsame Routine in $fan_home/bin/fanlaunch weitereleiten.

Starten Sie zur Sicherheit noch das Script adm/unixsetup, das dafür sorgt, dass die Startprogramme alle als ausführbar eingestellt werden:

> cd $fan_home
> bash adm/unixsetup

Ausführbare Unix-Scripts

Wenn die erste Zeile eines Fantom-Quellprogramms mit #! beginnt, wird vom Compiler ignoriert. Dies kann man dazu nutzen, es unter Unix als Shell-Script laufen zu lassen:

#! /usr/bin/env fan
class Script { static Void main() { echo("hi") } }

Damit dies funktioniert, muss das Quellprogramm natürlich noch auf ausführbar gesetzt werden:

> chmod +x myscript.fan
> ./myscript.fan

Konfigurieren unter Windows

Auch unter Windows ist es zweckmäßig, eine Umgebungsvariable fan_home zu definieren, die auf das Installationsverzeichnis verweist, und das Unterverzeichnis bin zur Pfadvariablen hinzufügen: PATH=....;%fan_home%\bin. Beides können Sie in der Systemsteuerung unter System→Erweiterte Systemeinstellungen→Umgebungsvariablen erledigen.

Ausführbare Windows-Scripts

Mit Hilfe des fan-Starters können Sie natürlich jedes Fantom-Script starten, indem sie dessen Dateinamen in der Befehlszeile übergeben. Schöner ist es aber, wenn man auch Scripts wie normale ausführbare Dateien starten kann:

fan build.fan    // expliziter Aufruf mit dem fan-Starter
build            // Aufruf als ausführbares Script

Die folgende Reihe von Konsolenbefehlen macht .fan-Dateien ausführbar:

assoc .fan=Fan
ftype Fan=%fan_home%\bin\fan.exe "%1" %*
set pathext=%pathext%;.fan

Entscheidung zwischen Java und .NET

Fantom läuft sowohlun unter der Java-VM als auch der .NET-CLR. Mit Hilfe des Befehls fan -version können Sie feststellen, welche Laufzeitumgebung eingestellt ist:

> fan -version
Fantom Launcher
Copyright (c) 2006-2011, Brian Frank and Andy Frank
Licensed under the Academic Free License version 3.0

Java Runtime:
  java.version:    1.6.0_13
  java.vm.name:    Java HotSpot(TM) Client VM
  java.vm.vendor:  Sun Microsystems Inc.
  java.vm.version: 11.3-b02
  java.home:       C:\Program Files\Java\jre6
  fan.version:     1.0.57
  fan.env:         sys::BootEnv
  fan.home:        D:\apps\fantom-1.0.57

In der Konfigurationsdatei %fan_home%\etc\sys\config.props können Sie einstellen, welche Laufzeitumgebung standardmäßig verwendet werden soll. Der Wert von runtime muss entweder java oder dotnet lauten:

// runtime - either "java" or "dotnet"
runtime=java

Diese System-Property können Sie mit der Aufrufoption --D überschreiben:

> C:\dev\fan>fan -version --Druntime=dotnet
Fantom Launcher
Copyright (c) 2006-2011, Brian Frank and Andy Frank
Licensed under the Academic Free License version 3.0

.NET Runtime:
  clr.version:  2.0.50727.4206
  sys.platform: win32-x86
  sys.version:  1.0.57

Auch mit der Umgebungsvariablen fan_runtime lässt sich die System-Property überschreiben:

C:\dev\fan>set fan_runtime=dotnet
C:\dev\fan>fan -version

Die Laufzeitumgebung lässt sich nur unter Windows einstellen. Unter Unix wird immer die Java-Runtime verwendet.

Java-Laufzeitumgebung

Wenn er unter Windows läuft, versucht der Fantom-Starter die aktuelle Java-VM mit Hilfe des Registry-Schlüssels SOFTWARE\\JavaSoft\\Java Runtime Environment.CurrentVersion zu ermitteln. Sie können die zu verwendende jvm.dll auch explizit durch die System-Property java.jvm festlegen. Außerdem können Sie mit java.options der JVM Optionen übergeben, zum Beispiel Einstellungen für den Arbeitsspeicher.

// etc/sys/config.props
runtime=java
java.jvm=c:\\dev\\tools\\java\\jre\\bin\\client\\jvm.dll
java.options=-Xmx128M

Gegenwärtig erfordert Java die Version 1.5 oder höher.

Sie können Fantom-Programme auch ohne den Starter direkt aufrufen, indem Sie die sys.jar Ihrem Klassenpfad hinzufügen und sicher stellen, dass entweder die Umgebungsvariable fan_home (wie oben beschrieben) korrekt gesetzt ist:

> set fan_home=c:\dev\fan
> java -cp %fan_home%\lib\java\sys.jar fanx.tools.Fan -version

Alle Fantom-Tools werden durch verschiedene Klassen abgebildet. Beispielsweise müssen Sie, um fant zu starten, die Java-Klasse fanx.tools.Fant aufrufe.

.NET-Laufzeitumgebung

Der Fantom-Starter versucht, die neueste installierte Version von .NET zu verwenden. Gegenwärtig wird .NET 2.0 oder höher benötigt. Der Aufruf von Fantom-Programmen ohne Starter ist derzeit noch nicht möglich.

Programmstart im Debug-Modus

Indem Sie die Umgebungsvariable fan_launcher_debug auf true setzen, können Sie das Starter-Programm debuggen. Dies kann hilfreich sein, wenn Sie Schwierigkeiten haben, Ihre Java- oder .NET-Umgebung zum Laufen zu bringen:

> set fan_launcher_debug=true

> fan -version
-- launcher version 1.0.50 2-Feb-10
--   args[0] = "fan"
--   args[1] = "-version"
-- init
--   fanHome = D:\java\fantom-1.0.57
--   config.props:
--     runtime=java
...

Allgemeine Einstellungen

Die folgenden Konfigurationseinstellungen sind unabhängig davon, ob Sie Fantom unter Unix oder Windows betreiben.

Java-Erweiterungen

Wenn Sie eine Java-JAR-Datei in einem der folgenden Verzeichnisse ablegen, wird sie vom Fantom-Classloader beim Start automatisch mitgeladen:

  • $fan_home/lib/java/ext/
  • $fan_home/lib/java/ext/{platform}

Das Plattform-Verzeichnis wird für JARs verwendet, die sich für verschiedene Betriebssystem-Plattformen unterscheiden. Beispielsweise werden die SWT-Bibliotheken in den plattformspezifischen Verzeichnissen linux-x86 , maxosx-x86_64 und win32-x86 verbreitet. Die Bezeichnung Ihrer aktuellen Plattform stellen Sie mit Hilfe des Befehls fan -version fest.

Näheres hierzu lesen Sie in derFantom-Dokumentation.

SWT-Unterstützung

Die Fantom-Distribution kommt mit SWT-Unterstützung für einige verbreitete Plattformen. Wenn Ihre nicht dabei ist, folgen Sie den folgenden Schritten, um SWT auf Ihrem Rechner zum Laufen zu bringen:

  1. Ermitteln Sie die Bezeichnung Ihrer Plattform mit Hilfe des Befehls fan -version.
  2. Laden Sie die swt.jar für Ihre Plattform von eclipse.org
  3. Legen Sie die swt.jar im Verzeichnis $fan_home/lib/java/ext/{platform}/swt.jar ab.

Ob SWT funktioniert, können Sie leicht überprüfen, indem Sie flux aufrufen.

Env

Standardmäßig verwaltet Fantom alle seine Dateien unter dem Installationsverzeichnis. Sie können aber Fantom auch in anderen Umgebungen starten, die der Struktur Ihres Deployments entsprechen. Mehr dazu finden Sie in der Fantom-Dokumentation.

Fünfmal Hello-World

Nachdem wir Fantom installiert und eingerichtet haben, wollen wir anhand des allfälligen "Hello World"-Beispiels die verschiedenen Möglichkeiten zeigen, die es gibt, um Fantom-Programme laufen zu lassen.

In der Fantom-Shell

Die Fantom-Shell ist ein einfaches Befehlszeilenwerkzeug, mit dem man Ausdrücke und Anweisungen ausprobieren kann. Sie starten die Fantom-Shell mit dem Befehl fansh und benutzen die Funktion echo, um einen Wert auszugeben:

> fansh
Fantom Shell v1.0.57 ('?' for help)
fansh> echo("Hallo Welt Nummer 1")
Hallo Welt Nummer 1
fansh> quit

Weitere Informationen finden Sie in der Fantom-Dokumentation unter Fansh.

Als Fantom-Script

Sie können jede Datei mit der Erweiterung .fan als Script ausführen. Das Script muss eine vollständige Klassendefinition und darin eine Methode namens main enthalten, z.B. wie die folgende Datei hello.fan:

class Hello
{
  static Void main() { echo("Hallo Welt Nummer 2") }
}

Den Namen der Script-Datei übergeben wir dem Fantom-Startbefehl fan:

> fan hello.fan
Hallo Welt Nummer 2

Beachten Sie, dass anders als bei Java oder C# die Argumente nicht unbedingt als Parameter an main übergeben werden müssen. Man kann entweder einen Parameter vom Typ Str[] verwenden oder alternativ auf sys::Env.args zugreifen.

In der Dokumentation finden Sie unter docTools>Fan weitere Hinweise zum Starten von Fantom-Scripts.

Als Fantom-Pod

Für Produktivsysteme organisiert man den Code eher in fertig kompilierte Module, die man bei Fantom als Pods bezeichnet. Man erstellt einen Pod mit Hilfe des Fantom-eigenen Build-Tools. Um einen Pod namens hello zu bauen, erzeugen Sie eine Verzeichnisstruktur wie die folgende:

  • hello/
    • build.fan
    • fan/
      • Main.fan

Der Inhalt von build.fan ist das Build-Script, in dem die Metadaten des Pod:

class Build : build::BuildPod
{
  new make()
  {
    podName = "hello"
    summary = "hello world pod"
    depends = ["sys 1.0"]
    srcDirs = [`fan/`]
  }
}

Die Datei fan/Main.fan deklariert eine einzelne Klasse namens Main:

class Main
{
  static Void main() { echo("Hallo Welt Nummer 3") }
}

Die Build-Datei ist ein ganz normales Fantom-Script, das den Pod kompiliert:

> fan build.fan
compile [hello]
  Compile [hello]
    FindSourceFiles [1 files]
    WritePod [/C:/dev/fan/lib/fan/hello.pod]
BUILD SUCCESS [70ms]!

Wenn Sie sich nun das Verzeichnis $fan_home/lib/fan ansehen, sollt sich darin eine Datei mit dem Namen hello.pod befinden. Da sich darin eine Klasse Main mit einer Methode main befindet, kann man sie mit dem Fantom-Starter laufen lassen:

> fan hello
Hallo Welt Nummer 3

> fan hello::Main
Hallo Welt Nummer 3

> fan hello::Main.main
Hallo Welt Nummer 3

In der Fantom Dokumentation finden Sie unter docTools>Fan weitere Informationen zum Starten von Methoden in einem Pod unter unter docTools>Build zum Build-Werkzeug.

Als FWT-Anwendung

Mit Hilfe des Fantom Widget Toolkit kann man sehr leicht Desktop-Anwendungen erstellen. Das folgende Script öffnet ein einfaches Fenster auf den Bildschirm (Sie finden es unter $fan_home/examples/fwt/hello.fan):

using fwt
class FwtHello : Test
{
  Void main()
  {
    Window { Label { text = "Hallo Welt Nummer 4" }, }.open
  }
}

Die Sprache Fantom macht es leicht, eine Benutzerschnittstelle deklarativ zu definieren.

Datei:Helloworld4.png

Als Web-Anwendung

Wir erzeugen eine sehr einfache Web-Anwendung mit Hilfe eines Boot-Script, das den in Fantom eingebauten Webserver mit einem einfachen Hello-Webmod startet.

Sehen Sie sich den folgenden Beispielcode an (das Script ist auch auch unter $fan_home/examples/web/hello.fan zu finden):

using util
using web
using wisp

class WebHello : AbstractMain
{
  @Opt { help = "http port" }
  Int port := 8080

  override Int run()
  {
    wisp := WispService
    {
      it.port = this.port
      it.root = HelloMod()
    }
    return runServices([wisp])
  }
}

const class HelloMod : WebMod
{
  override Void onGet()
  {
    res.headers["Content-Type"] = "text/plain; charset=utf-8"
    res.out.print("Hallo Welt Nummer 4")
  }
}

Das Boot-Script enthält zwei Klassen. Die erste namens WebHello ist von der Klasse util::AbstractMain abgeleitet, die einige Unterstützung für Main-Programme bietet. Die Hauptaufgabe von WebHello besteht darin, den Webserver so zu konfigurieren, dass er auf Port 8080 läuft und einen einfachen Webmod verwendet, der festlegt, wie HTTP-Anfragen zu behandeln sind.

Die Klasse HelloMod ist von web::WebMod abgeleitet; das ist gewissermaßen die "Servlet"-API von Fantom für die Bedienung von Web-Anfragen. HelloMod tut nicht viel - die Klasse setzt den Content-Type und schreibt den Antworttext.

Wenn Sie dieses Script starten:

> fan $fan_home/examples/web/hello.fan
 [09:57:40 11-Apr-08] [info] [fand] booting...
 [09:57:40 11-Apr-08] [info] [web] WispService started on port 8080

Nun sollte es möglich sein http://localhost:8080/ mit dem Browser abzurufen.

Auch bei Fandom

Zufälliges Wiki