Was zu Windows 7 + Silverlight

Ich nutze die Betaversion von Windows 7 nur gelegentlich und aus Sicherheitsgründen natürlich in einer VM. Also von daher sind meine Erfahrungen eingeschränkt gültig. Aber 2 Sachen sind mir aufgefallen:

1. Ich habe Probleme in der Darstellung von Joomla! im IE, der in Windows 7 dabei ist. Aber das ist wohl ein Problem, das eher Windows 7 nicht anzulasten ist. Wer den IE nimmt ist schließlich selbst schuld.

2. Wollte mir gerade eine Webseite ansehen, die mit Silverlight gemacht ist. Ging nicht – Silverlight 2.0 ist nicht in Windows 7 dabei. Warum eigentlich nicht, wenn Silverlight angeblich bei MS so gepushed wird? Nachinstallation ist kein Problem, aber eigentlich sollte das schon dabei sein. Sonst wird das nix mit den groß angekündigten Sivlerlight-Plänen von MS.

Ansonsten gefällt mir W7 bisher immer noch ganz gut.

Blog-Zensur

Unter dem fadenscheinigen Argument des Jugendschutzes ist neulich ein Blog über Magersucht geschlossen wurden. Dort würde Magersucht verherlichen und damit wäre das jugendgefährdend.

Unabhängig von der tatsächlichen oder eingebildeten Gefahr für die Jugend – was wirklich gefährlich ist, ist eine solche Zensur. Und absolut inakzeptabel.

Wehred den Anfängen. Freiheitsfeinden fallen immer subtilere Argumente ein um Überwachung und Zensur einen legitimen Deckmantel zu geben.

Onlinekurs „Französisch ohne Mühe“ fertig





Ich habe die letzten Wochen das Sprachmodul weiter entwickelt, über das man online Sprachen lernen kann (also eine moderne RIA, die auf AJAX sowie Dojo und Prototype aufsetzt und zur Wiedergabe und Aufnahme von Tondateien zudem Java und Flash einsetzt).

Das Modul stellt einmal Texte in der Fremsprache und Deutsch dar, spielt die englischen Sätze als Tondateien ab, beinhaltet ein kleines Tonstudio, um eigene Sprachübungen aufzunehmen und bietet verschiedene Übungstechniken zum Vertiefen der erlernten Sprachkenntnisse.
Heute ist der Kurs Französisch ohne Mühe fertig geworden.

Ich habe die RIA so konzipiert, dass die Erweiterung auf neue Sprachen mit relativ geringem Aufwand möglich sein sollte.
Der Prototyp war ein Englischkurs für Einsteiger (Englisch ohne Mühe) und nach dessen Livetests habe ich nun mit dem Französischkurs die erste Anpassung an eine neue Sprache bis zur Praxisreife durchgezogen.
Schon der Prototyp war gar nicht schlecht konzipiert, denn die Anpassung ging recht glatt. Und mit zwei verschiedenen Sprachmodulen habe ich jetzt ein gute Testbasis, um die Integration von weiteren Sprachen immer leichter möglich zu machen. Die Anpassung an Französisch hat das Programm insgesamt vorangebracht und ich setzte die Versionsnummer auf 0.96 hoch. Also meiner Meinung nach fast fertig.

Als nächstes gehe ich Italienisch an und der Fortgeschrittenenkurs Englisch funktioniert ja auch schon im Groben.

Hier geht es zur Anmeldung zu den Sprachkursen, die in Zusammenarbeit mit dem Verlag ASSIMIL GmbH und dem Arbeitskreis für Information – AKI RP/Eifel progammiert und vertrieben werden.

Technisch handelt es sich bei dem Programm wie gesagt um eine RIA (Rich Internet Application) auf Basis von PHP, MySQL, DHTML, AJAX sowie den AJAX-Frameworks Dojo Toolkit und Prototype. Daneben kommen noch Flash und Java zur Unterstützung von Multimediaeffekten zum Einsatz.
Um deshalb ein bisschen Werbung in eigner Sache zu machen – viele Grundlagen der Umsetzung findet man in meinem Buch Ajax Frameworks.



Als Verwaltungsplattform verwenden wir ILIAS, eine leistungsstarke, web-basierte Lernplattform für E-Learning in einem integrierten System (Persönlicher Schreibtisch, Kursmanagement, Gruppensystem, Magazin mit Rollen-basiertem Zugriff, …).

Kleine Animation mit JavaFX Script

Der nachfolgende Quelltext zeigt eine kleine Animatin, die mit den mächtigen Komponenten in JavaFX Script auf einfachste Weise erzeugt werden kann.

Erstellt mit der Finalversion 1.0 von JavaFX!


/*
* Main.fx
* Eine kleine Animation mit JavaFX Script
*
* Created on 27.01.2009, 12:11:28
* Copyright Ralph Steyer, www.rjs.de, RJS EDV-KnowHow
*/

package gui7;

import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.Scene;
import javafx.stage.Stage;

var x=0;
var y=0;
var bild =ImageView {
translateX: bind x
translateY: bind y
image: Image {
url: "https://rjs.de/bilder/devil.gif"
}
}
Timeline {
repeatCount: Timeline.INDEFINITE
keyFrames: [
KeyFrame {
time: 5s
canSkip: true
values: x => 150

},
KeyFrame {
time: 8s
values: y => 80 tween Interpolator.LINEAR


}
]
}.play();
Stage {
title: "Animationen"
width: 250
height: 250
scene: Scene {
content: [bild]
}
}

Und hier ein kleiner Formulargag mit Scriptaculous für AJAX

Den so genannten In.Place-Editor von Scriptaculous find ich klasse. Klicken Sie mal auf den Text in dem IFrame. Da wird ein normaler Text editierbar ohne die sonst üblichen häßlichen Formulareingabefelder in der Webseite anzuzeigen, wenn der Inhalt nur angezeigt werden soll.

Auch aus meinem Buch Ajax Frameworks



So geht’s:

<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.01//EN“
 „https://www.w3.org/TR/html4/strict.dtd“>
<html>
 <head>
   <meta http-equiv=“Content-Type“
     content=“text/html; charset=iso-8859-1″ />
   <title>Scriptaculous</title>
   <script type = „text/javascript“
     src=“prototype-1.6.0.3.js“></script>
   <script  type=“text/javascript“
 src=“scriptaculous-js-1.8.2/src/scriptaculous.js“></script>  
 </head>
 <body>
   <h1>AJAX-Anfrage mit Ersetzen eines Textes</h1>
<div id=“klickmich“>Klick mich an um mich zu bearbeiten und dann zu ersetzen</div>
<script type=“text/javascript“>
new Ajax.InPlaceEditor(‚klickmich‘, ‚info.php‘);
</script>
</body>
</html>

Kleiner Dojo-Effekt für die Webseite

Hier ist ne kleine Dojo-Anination für die Webseite.

Aus meinem Buch Ajax Frameworks



So geht’s:
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Transitional//EN“
   „https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=“https://www.w3.org/1999/xhtml“>
<head>
<meta name=“generator“ content=
„HTML Tidy for Windows (vers 14 February 2006), see www.w3.org“ />
<title>Animationen mit Dojo</title>

<script type=“text/javascript“ src=
„https://o.aolcdn.com/dojo/1.2/dojo/dojo.xd.js“ djconfig=
„parseOnLoad: true, isDebug:false“>
</script>
<script type=“text/javascript“>
//<![CDATA[
     dojo.require(„dojo.fx“);
     dojo.addOnLoad(function(){
   var anim = dojo.fadeOut({ node: „meineID“, duration:5000 });
   var anim2 = dojo.fadeIn({ node: „meineID“, duration:6000 });
   dojo.fx.chain([anim,anim2]).play();
     });
//]]>
</script>
</head>
<body>
<h1>Aus- und Einblenden</h1>
<img src=“b5.jpg“ id=“meineID“ name=“meineID“ />
</body>
</html>

Wieder zuhause

Bin wieder zuhause. Der Rückflug heute morgen war unmenschlich früh. Schon um 6:20 Uhr ab Graz. Dafür war ich um 9:00 Uhr schon im Büro. Manche Leute haben jeden Tag so eine Anreisezeit zur Arbeit ;-).
Und irgendwie wollen da ganz viele Leute nach Frankfurt. War ausnahmsweise mal ein etwas größerer Jet und im Gegensatz zu sonst nicht von Eurowings, sondern Lufthansa selbst.

That’s it

Fertisch!

Auch das Onlinetraining zu JavaFX Script ist eingespielt. Ist allerdings erheblich umfangreicher geworden als ich geplant hatte. Gibt halt doch ne Menge zu dem Thema zu sagen.

Jetzt noch ein paar Abschlussarbeiten und dann ist mein Job in Graz erledigt. Morgen fliege ich zurück. Dummerweise schon um 6:20 Uhr. Eckelhaft!

Ansonsten gab es auch dieses Mal Filmaufnahmen. Ich musste heute noch zwischenzeitlich ins Filmstudio und musste zu den 4 Trainings was vor der Kamera loslassen. Dachte eigentlich, dass das nur bei DVDs üblich ist. Und ich habe erstmals mit einem Teleprompter gearbeitet, von dem ich meinen Text während der Filmaufnahmen abgelesen habe. Das ist ja tierisch anstrengend.

Das war der dritte Streich

Ist schon toll. Andere Leute sagen, dass heute Sonntag ist ;-). Aber ich habe nicht viel davon mitbekommen in meinem abgeschlossenen Tonstudio (ohne Fenster). Egal. Das dritte Onlinetraining ist eingespielt und ich bin gut in der Zeit. Bis Dienstagabend muss ich noch ein Training zu JavaFX Script einspielen und bisher habe ich etwa 1,5 Tage pro Training gebraucht.

Los geht es mit den Videotrainings

Ich bin in Graz bei Video2Brain angekommen und nehme jetzt erst einmal ein Onlinetraining zu AJAX auf. Die Anreise war problemlos, nur hab ich aus dem Flugzeug rein gar nix gesehen. In einer Mittelreihe direkt am Triebwerk gesessen. Egal – kenne die Route ja mittlerweile recht gut ;-).
Ansonsten wohne ich nicht wie sonst in der Trainerwohnung, sondern in einem Hotel. Keine selbstverpflegung möglich, aber zumindest gibt es Frühstück. Sind richtig viele Trainer hier gerade am Aufnehmen.

Windows 7

Ich halte zwar – wie immer wieder betont – Linux für das Betriebssystem, das den besten Kompromiss aus Sicherheit, Benutzerfreundlichkeit und Leistungsfähigkeit bietet (ohne MacOS genau zu kennen, was angeblich ebenso gut sein soll). Aber ich habe auch keine Berührungsängste mit Windows zu arbeiten. Die meisten Versionen von Windows haben durchaus ihre Qualitäten (insbesondere im Massenmarkt) und ich habe weder Zeit noch Lust rein aus dogmatischen Gründen an meinem geliebten Linux zu kleben. Wenn es Sinn macht oder notwendig ist, verwende ich auch Windows. Z.Z ausschließlich XP, denn ältere Versionen sind einfach nicht mehr zeitgemäß. Und dass Hasta la Vista neben ME der größte Flopp der Windows-Reihe ist braucht nicht diskutiert werden.

Aber wenn die ersten Berichte stimmen hat Microsoft aus dem Vista-Disaster gelernt und mit Windows 7 ein gutes System hingelegt, das es seit ein paar Tagen in einer Betaversion zum kostenlosen Download und Test gibt. Die Version soll bis August 2009 laufen. Das Teil muss ich mir unbedingt ansehen und dazu in einer VM installieren. Das soll angeblich recht problemlos gehen.

Hab mir gerade eine Windows Live ID besorgt (leider vor dem Download notwendig) und aktuell lade ich mir gerade das ISO-File. Dazu kommt ein Downloadmanager zum Einsatz. Und der ist in – festhalten – Java geschrieben! Zumindest wenn man die Sache mit Firefox durchzieht. Ich fasse es nicht. Auch Microsoft verliert Berührungsängste ;-). Alles wird gut ;-).

Datenumzug unter erschwerten Bedingungen

Musste beim Datenumzug helfen. Von einem Uralt-Pentium 2 mit Windoof 98 auf einen Neurechner mit Witzda. Ohne Netzwerk oder Internet. Man was eine Aktion.

Der Uraltrechner kommt mit USB-Sticks etc. nicht zurecht und der Neurechner hat natürlich keine Altschnittstellen oder gar ein Diskettenlaufwerk. Ich musste mein Notebook als Zwischenstation verwenden, um die Daten per Diskette vom Altrechner zu sichern und da auf den USB-Stick schieben, den dann der Neurechner nutzen konnte. Der Sch… hat dermaßen Nerven gekostet. Leute – sichert die Daten auf Altrechner rechtzeitig und tauscht Rechner nicht erst nach 10 Jahren aus.

Und ich konnte endlich mal wieder mit Vista arbeiten. War wichtig – ich hatte in der Tat mit dem Gedanken gespielt auf meinem nächsten Rechner Vista zu nehmen. Bin wieder kuriert. Bloß nicht. Nicht dass XP gut ist, aber zumindest nicht so eine Katastrophe wie Witzda. Ich hoffe mal, dass das neue Windows endlich ein guter Wurf wird und damit auch wirklich mit Linux mithalten kann (was ich in ersten Tests gelesen habe, ist ja ganz vielversprechend). Würde gerne dieses Jahr einen neuen Rechner anschaffen, aber nicht mit Wischda. Und Linux werde ich sowieso immer parallel fahren.

Minuend – was bitte?

Heute kamen meine Kinder mit einem Lehrplan nach Hause, was Sie bis zum Ende der Grundschule noch alles in Mathematik lernen sollen. Unter anderem tauchte der Begriff Minuend auf. Toll – zwar habe ich 12 Semester Mathematik studiert, aber das Wort ist mir noch nie unter gekommen. Musste gleich mal im Internet suchen, ob es diesen Begriff wirklich gibt oder nur ein Kunstwort der Bildungsmissere ist. Aber anscheindend benutzen Leute diesen Begriff wirklich. Ob es das bringt für die Grundrechenarten Kindern Worte unterzujubeln, die selbst Mathematiker, Bankfachwirte, und weitere Zahlenakkrobaten nicht kennen?

Weitere Sprachen für den Onlinekurs

Wie schon an anderer Stelle gespostet, programmiere ich derzeit ein Sprachmodul, über das man online Sprachen lernen kann.

Ich habe die RIA so konzipiert, dass die Erweiterung auf neue Sprachen mit relativ geringem Aufwand möglich sein sollte. Nachdem der Englischkurs für Einsteiger seit einigen Tagen im Livetest ist, habe ich gestern mit zwei weiteren Kursen erste Experimente gemacht. Das bedeutet im Wesentlichen, dass jeweils neue Tondateien bereitgestellt werden und eine neue Datenbank hinzukommt. Danach werden ein paar Parameter im Programm angepasst und die Sache sollte gehen. Und in der Tat – die ersten Tests sehen absolut vielversprechend aus. Der Fortgeschrittenenkurs Englisch und der Einsteigerkurs Französisch funktionieren im Groben. Ich muss wahrscheinlich nur noch den Quellcode etwas mehr modularisieren bzw. Texte auslagern und die Texte in der Datenbank an die RIA anpassen – dann sollte es gehen. Wäre super, wenn sich neue Sprachen wirklich so einfach einbauen ließen. Dann hätte ich den Prototypen doch gar nicht so dumm konzipiert (Hoffnung 😉 ).
Für einen kurzen Zeitraum können Sie das Sprachprogramm auch kostenlos testen.

JavaFX-Kurs

Ich halte gerade meinen ersten Kurs in JavaFX Script. Zwar habe ich so einen Kurs schon seit einigen Monaten angeboten, aber bisher war die Resonanz null. Aber heute und morgen läuft sozusagen der Prototyp. Es ist auch für mich sehr interessant den aktuellen Stand der Finalversion von JavaFX nochmal im Detail anzusehen und mit den Kenntnissen zu vergleichen, die ich mir auf Grund der Vorversionen erarbeitet hatte.
JavaFX Script ist alles in Allem richtig rund geworden, aber in diversen Details muss man als Java-Programmierer schon ziemlich schlucken. Die Abweichungen zu reinem Java sind teilweise ziemlich heftig.
Dennoch – ich verspreche JavaFX eine durchaus interessante Marktchance. Vor allen Dingen durch die darunter liegenden Java-Basis, die ja praktisch auf jedem Computer und den meisten Customergeräten sowieso vorhanden ist.

RJSKryp for JavaFX

Ich erstelle schon seit Jahren immer wieder verschiedene Varianten von einem Kodierungsprogramm, das ich unter dem Namen RJSKryp laufen lasse.
Mittlerweile gibt es verschiedenste Java-Varianten, die teils mit einer GUI, teils ohne GUI auskommen. Es vor einigen Wochen habe ich ja auch hier im Blog eine neue Version gepostet.

Durch die wachsende Popularität von JavaFX und vor allen Dingen das Erscheinen der Finalversion lag es nun für mich sehr nahe, eine Abwandlung auf Basis von JavaFX zu erstellen.

Die neue Version RJSKryp for JavaFX ist nun ein Kodierungsprogramm für beliebige Dateien, das in wesentlichen Punkten mit JavaFX Script erstellt wird (insbesondere die GUI). Für die konkreten Dateizugriffe wird Java selbst verwendet und es werden auch Swing-Komponenten direkt eingebunden. Man kann hier also auch das direkte Zusammenspiel zwischen JavaFX Script und Java erkennen.

Das Programm verwendet zum Kodieren und Dekodieren von Dateien wie die anderen Varianten einen Verschlüsselungs- und Entschlüsselungalgorithmus, der auf einer Verschiebung der Zeichenkodierung basiert. Der verwendete Algorithmus ist auf Grundlage der Cäsar-Chiffre konzipiert. Dies ist ein einfacher Verschiebungsalgorithmus. Diese Verschlüsselungsmethode lautet wie folgt: für jeden im Quelltext vorkommendes Zeichen setze im Chiffretext einen um einen festen Parameter versetztes Zeichen.

Hier ist nun ein Webstart-Aufruf für die Applikation
Auruf als Java-Applet über eine neue Webseite

Der Quelltext

RJSKryp.fx

/*
* RJSKryp.fx
*
* Created on 02.01.2009, 11:33:02
*/

package rjskryp;

import java.lang.System;
import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.ext.swing.SwingButton;
import javafx.ext.swing.SwingHorizontalAlignment;
import javafx.ext.swing.SwingLabel;
import javafx.ext.swing.SwingSlider;
import javafx.ext.swing.SwingTextField;
import javafx.scene.effect.DropShadow;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.RadialGradient;
import javafx.scene.paint.Stop;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;
import javax.swing.JFileChooser;
import rjskryp.Kodier;

/**
* @author Ralph Steyer – RJS EDV-KnowHow – www.rjs.de
* Kodierungsprogramm mit JavaFX Script
*
* Hauptprogramm – die GUI im Wesentlichen mit JavaFX Script, die Kodierung selbst Java
*
* Das Programm verwendet zum Kodieren und Dekodieren von Dateien einen Verschlüsselungs-
* und Entschlüsselungalgorithmus, der auf einer Verschiebung
* der Zeichenkodierung basiert. Der verwendete Algorithmus ist auf
* Grundlage der Cäsar-Chiffre konzipiert. Dies ist ein einfacher
* Verschiebungsalgorithmus. Diese Verschlüsselungsmethode lautet wie folgt:
* für jeden im Quelltext vorkommendes Zeichen setze im Chiffretext einen um
* einen festen Parameter versetztes Zeichen.
*/

var scale = 1.0;
var color = Color.SILVER;
Timeline {
repeatCount: Timeline.INDEFINITE
keyFrames: [
KeyFrame {
time: 10s
canSkip: true
values: [
scale => -1.0 tween Interpolator.EASEBOTH
color => Color.BLUE
]
}
]
}.play();
var f = new JFileChooser(); // Eine Swing-Komponente aus javax.swing

var label1=SwingLabel {
font:Font{
name:“Tahoma“
size: 25
}
text: „RJSKryp for JavaFX – Version 1.01 – www.rjs.de“
foreground:Color.SILVER
horizontalAlignment:SwingHorizontalAlignment.CENTER
width:600

}

var meinSlider=SwingSlider {
minimum: 0
maximum: 255
value: 3
vertical: false
}

var buttonGruppe=HBox{
spacing: 10
translateY:50
translateX:100
content:[
SwingButton {
text: „Kodieren“
action: function() {
var returnVal = f.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
var quelle = f.getSelectedFile();
returnVal = f.showSaveDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
var ziel = f.getSelectedFile();
if (ziel.exists()) then {
nachrichten1.text =
„Achtung! Zieldatei schon vorhanden. Vorgang wird abgebrochen“;
}
else {
nachrichten1.text =“Verarbeitung läuft“;
nachrichten2.text =““;
if (
new Kodier().kodiere(quelle, ziel, true,meinSlider.value) == 0) then {
nachrichten1.text =
„Verarbeitete Datei:n {quelle}“;
nachrichten2.text =
„Erstellte Datei:n {ziel}“;
}
else {
nachrichten1.text=“Fehler bei der Verarbeitung“;
}
}
}
}
else {
nachrichten1.text =““;
nachrichten2.text =““;

}

}
},
SwingButton {
text: „Dekodieren“
action: function() {
nachrichten1.text =“Verarbeitung läuft“;
nachrichten2.text =““;
var returnVal = f.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
var quelle = f.getSelectedFile();
returnVal = f.showSaveDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
var ziel = f.getSelectedFile();
new Kodier().kodiere(quelle, ziel, false,meinSlider.value);
}
}

}
},
SwingButton {
text: „Ende“
action: function() {
System.exit(0);
}
}
,
meinSlider
]

}
var verschiebung=SwingLabel {
text: bind „Verschiebungsfaktor: {meinSlider.value}“
foreground:Color.SILVER
translateX:400
translateY:80
font:Font{
name:“Tahoma“
size: 12
}
width:300
}
var nachrichten1=SwingTextField {
columns: 10
text: „“
editable: false
translateX:10
translateY:150
foreground:Color.RED
font:Font{
name:“Tahoma“
size: 12
}
width:575
height:20
background:Color.SILVER

}
var nachrichten2=SwingTextField {
columns: 10
text: „“
editable: false
translateX:10
translateY:170
foreground:Color.RED
font:Font{
name:“Tahoma“
size: 12
}
width:575
height:20
background:Color.SILVER

}

Stage {
title: „RJSKryp for JavaFX – Version 1.01 – www.rjs.de“
width: 600
height: 400
scene: Scene {
fill:RadialGradient {
centerX: 375
centerY: 175
radius: 390
proportional: false
stops: [
Stop {
offset: 0.0
color: Color.BLUE},
Stop {
offset: 1.0
color: Color.BLACK}
] // stops

} // RadialGradient
content: [VBox{
spacing: 10
content:[
label1
]
},
buttonGruppe,
verschiebung,
nachrichten1,
nachrichten2,

Text {
translateX:200
translateY:150

font: Font {
size: 14
}
x: 110,
y: 90
textAlignment: TextAlignment.CENTER
content:“RJS EDV-KnowHownnCopyright: Ralph SteyernInternet: www.rjs.de – www.javafx-buch.denBlog: rjsedv.blogspot.com“
fill: bind color
effect: DropShadow {
offsetX: 10
offsetY:5
color: Color.color(0.2, 0.2, 0.1)
}; // DropShadow
transforms: Scale{
x: 1
y: bind scale
pivotX: 100,
pivotY: 100
} // Scale
} //Text

]
}
visible:true
}

Kodier.java

package rjskryp;

/**
* @author Ralph Steyer – RJS EDV-KnowHow – www.rjs.de
* Kodierungsprogramm mit JavaFX Script
* Java-Klasse zur Bereitstellung der Dateizugriffe und der eigentlichen Kodierung
*/
import java.io.*;

public class Kodier {

/**
* Die Methode zum Kodieren und Dekodieren. Dazu wird ein Verschlüsselungs-
* und Entschlüsselungalgorithmus implementiert, der auf einer Verschiebung
* der Zeichenkodierung basiert. Der verwendete Algorithmus ist auf
* Grundlage der Cäsar-Chiffre konzipiert. Dies ist ein einfacher
* Verschiebungsalgorithmus. Diese Verschlüsselungsmethode lautet wie folgt:
* für jeden im Quelltext vorkommendes Zeichen setze im Chiffretext einen um
* einen festen Parameter versetztes Zeichen.
*
* Als Übergabeargumente werden die Quelldatei und Zieldatei sowie ein Flag
* zur Steuerung, ob Kodieren oder Dekodieren, und die Verschiebung
* angegeben
*
* @param quelle2
* zu kodierende oder dekodierende Datei
* @param ziel2
* die Zieldatei mit dem veränderten Inhalt
* @param kodieren
* Angabe ob kodieren (true) oder dekodiern (false)
* @param verschiebung
* Faktor der Verschiebung
*/
public int kodiere(File quelle2, File ziel2, boolean kodieren,
int verschiebung) {
// Erstellen eines Eingabe- und eines
// Ausgabestroms.

// Quelle nur zum Lesen öffnen
RandomAccessFile quelle=null, ziel=null;
try {
quelle = new RandomAccessFile(quelle2, „r“);
ziel = new RandomAccessFile(ziel2, „rw“);
while (true) {
// Einlesen eines Bytes aus der Quelle
byte b = (byte) quelle.readByte();
/*
* Hier findet die Verschiebung statt. Wir kümmern uns selbst um
* den Wertebereich von dem Datentyp byte, indem wir den
* Modulo-Operator verwenden.
*/
if (kodieren)
b = (byte) ((b + verschiebung));
else
b = (byte) ((b – verschiebung));
// Schreiben eines Bytes in die Zieldatei
ziel.writeByte(b);
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
return 1;
}

// Dateiende der Quelldatei erreicht.
catch (EOFException e) {
try {
quelle.close();
ziel.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

return 0;
} catch (IOException e) {
return 2;
}

}

}