Webbrowser-Programmierung in Java
Seite 2: Taschenrechner in Java
Eine einfache Taschenrechner-Klasse (Calculator.java) in Java dient als Basis, die dann in der JavaScript-App landen soll. Die Taschenrechner-Klasse bietet eine Methode zur Berechnung von Summen namens calculateSum
an. Die Implementierung geschieht wie folgt:
...
public double calculateSum(Double[] values) {
List<Double> doubles = Arrays.asList(values);
if (values != null) {
logger.info("Values size: " + doubles.size());
Double sum = doubles.stream().mapToDouble(
Double::doubleValue).sum();
return sum;
} else {
logger.info("Values: null");
return 0.0;
}
}
...
Die Taschenrechner-Klasse können Entwickler wie gewohnt mit JUnit und nach Bedarf mit Mockito testen. Die Testklasse können Anwender in ihrer gewohnten Java-IDE wie Eclipse, IntelliJ oder VS Code for Java implementieren (Abbildung 2).
Um die Taschenrechner-Klasse in JavaScript zu benutzen, müssen Entwickler das Framework JsInterop von GWT oder J2CL verwenden. JsInterop ist ein Framework für die Interoperabilität zwischen JavaScript und Java. Sowohl GWT als auch J2CL verwenden es, um auf JavaScript zuzugreifen oder umgekehrt von JavaScript darauf zuzugreifen. Im Prinzip markiert es Java-Klassen und -Methoden, damit der Transpiler die richtigen JavaScript-Quellcodes generieren kann. Die Arbeitsweise von JsInterop zeigt Abbildung 3.
Weiteres zu JsInterop
Folgende Websites bieten gute Informationen zu JsInterop:
Im Beispiel müssen Anwender die Taschenrechner-Klasse in eine JavaScript-Datei exportieren. Die Implementierung der Taschenrechner-Klasse steht in Java zur Verfügung. Somit stellt sie den ersten Fall aus Abbildung 3 dar. Dazu ist lediglich die Kennzeichnung der Taschenrechner-Klasse mit einer @JsType
-Annotation nötig, die global mit dem Namen "Calculator" verfügbar sein soll.
...
@JsType(namespace = JsPackage.GLOBAL)
public class Calculator {
public double calculateSum(Double[] values) {
...
}
}
...