You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

Inleiding

Voor het programma is een java frontend nodig, zodat het gebruikt kan worden door een eindgebruiker via een exe bestand. Hiervoor zijn meerdere opties mogelijk, zoals JavaFX of Swing. Dit moet vroeg besloten worden omdat het onwikkelen van een frontend handig is om dingen te presenteren aan de product owner, en het duurt lang, dus is het beter om dit te ontwikkelen aan het begin van het project.

De hoofdvraag is dus Kunnen wij beter JavaFX of Swing als java frontend framework gebruiken om een nieuwe versie van rokade te maken?

Dit kan worden opgedeeld in de volgende deelvragen:

Wat is JavaFX?

Wat is Swing?

Wat zijn de voor en nadelen van JavaFX?

Wat zijn de voor en nadelen van Swing?

Hoe maak je een JavaFX applicatie?

Hoe maak je een Swing appliatie?

Wat is het verschil tussen JavaFX en Swing?


Wat is JavaFX?

JavaFX is een platform en framework dat gebruikt wordt voor de ontwikkeling van desktopapplicaties en rijke internettoepassingen. Het is gebaseerd op Java en biedt een uitgebreide set tools en bibliotheken om interactieve en visueel aantrekkelijke gebruikersinterfaces te creëren. Met JavaFX kunnen ontwikkelaars diverse moderne technologieën integreren om boeiende en responsieve applicaties te bouwen.

Wat zijn de voor en nadelen van JavaFX?

Voordelen van JavaFX.

  1. CSS styling: Het is mogelijk om JavaFX applicaties te stylen met Cascading style sheets. Dit maakt het mogelijk om net als bij HTML websites de elementen en het uiterlijk van elkaar te scheiden, en om applicaties te maken die er uniek uitzien zonder de code onoverzichtelijk te maken. JavaFX CSS Reference Guide. (n.d.)
  2. Verschillende media: Binnen JavaFX is het makkelijk om video of audiobestanden af te spelen. Het is zelfs mogelijk om webpaginas binnen een applet te bekijken, of om 3D beelden te renderen. Dit zit allemaal in de JavaFX library, hier zijn bij andere libraries apparte plugins voor nodig. JavaFX Overview (Release 8). (n.d.).
  3. Leercurve: JavaFX is makkelijker te leren dan andere frontend libraries zoals Swing.(Larkin, P. (2022, July 20). JavaFX vs Swing: The Key Differences ) Ook is de Yaeger engine van de HAN gebouwd op JavaFX, waardoor alle teamleden al een beetje bekend zijn met de structuur van een JavaFX applicatie. YaegerGame (yaeger 2023.2024 API). (n.d.).

Nadelen van JavaFX

  1. Jong: JavaFX is jonger dan de veelgebruikte alternatieven, en heeft dus relatief minder ondersteuning en software tools om te gebruiken dan de alternatieven.(Larkin, P. (2022, July 20). JavaFX vs Swing: The Key Differences )

Wat is Swing?

Swing is een grafische gebruikersinterface (GUI)-toolkit die de GUI-componenten bevat en een reeks widgets en pakketten biedt om geavanceerde GUI-componenten voor Java-toepassingen te maken. Het is een voorganger van JavaFX en is gebouwd bovenop de verouderde Java Abstract Widget Toolkit (AWT).

Swing wordt gewaardeerd vanwege zijn platformonafhankelijkheid, waardoor ontwikkelaars Java-toepassingen kunnen schrijven die op verschillende besturingssystemen kunnen draaien zonder dat er aanpassingen nodig zijn. Het maakt gebruik van Java AWT maar biedt meer geavanceerde en moderne GUI-componenten en functionaliteiten. 

Als onderdeel van de Java Foundation Classes (JFC) heeft Swing de manier waarop Java-desktopapplicaties worden ontwikkeld en ervaren drastisch veranderd. Met zijn rijke functionaliteit en flexibiliteit heeft Swing een grote invloed gehad op de ontwikkeling van GUI-toepassingen in Java.

Wat zijn de voor en nadelen van Swing?

Voordelen van Swing:

  1. Onafhankelijkheid: Swing-applicaties kunnen op alle moderne besturingssystemen gebruikt worden, dankzij java's design. Het is mogelijk om applicaties te ontwikkelen die er hetzelfde uitzien op verschillende computers, maar ook om zonder veel moeite het uiterlijk van de applcaties aan te passen aan het besturingssysteem van de gebruiker. (The JavaTM tutorials > Creating a GUI with Swing > Modifying the look and feel). (n.d.).

  2. Ondersteunding: Swing is een erg oude library, dit heeft ook nadelen, maar zorgt er ook voor dat veel problemen al bekend en opgelost zijn. Er is veel documentatie over Swing beschikbaar, en veel software tools en plugins om ontwikkeling van Swing applicaties te ondersteunen. Iemand die hiermee bekend is kan dus efficient Swing applicaties ontwikkelen. (AnveshKumar. (2023, March 19). The battle of JavaFX vs Java Swing: Which one is best for you? DevDojo.)

Nadelen van Swing.

  1. Leercurve: Voor beginnende ontwikkelaars kan het leren van Swing en het begrijpen van zijn concepten en functionaliteiten enige tijd vergen, vooral in vergelijking met eenvoudigere frontend-frameworks, zoals persoonlijk bleek bij het onderzoek in hoofdstuk 7

  2. Ouderdom: De Swing library is oud (Sun and Netscape to Jointly Develop Java Foundation Classes. (n.d.).), en is nog steeds gemaakt voor oudere besturingssystemen. Dit is handig als je een app wilt ontwikkelen die op nieuwe en oude systemen moet draaien, maar het zorgt er ook voor dat veel documentatie en hulpmiddelen zijn gemaakt voor oude besturingssystemen en frontend designs. Swing applicaties zien er dus vaak ouderwets uit. (The JavaTM tutorials > Creating a GUI with Swing > Modifying the look and feel). (n.d.).

Hoe maak je een JavaFX applicatie?

Text goes here

Hoe maak je een Swing applicatie?

(Gemaakt met behulp van voorkennis, Lesson: Getting Started with Swing (The JavaTM Tutorials > Creating a GUI With Swing). (n.d.) en Hejazi, F. (2019, May 7). IntelliJ IDEA GUI Designer Tutorial. Examples Java Code Geeks.)

Een Swing applicatie bestaat uit frames. Een Frame is wat door je systeem wordt gezien als een "window". Binnen een complexe applicatie bestaan de frames ook uit een of meerdere Panel(s). Een panel is een soort class dat UI elementen kan bevatten. Vanwege hoe de taal is opgezet kan je zelfs een frontend aanmaken zonder apparte classes aan te maken, zoals te zien in de code snippet hieronder:

public static void main(String[] args){
Frame frame = new Frame("simple app");
Panel panel = new Panel();
Label label = new Label("This is a label");
TextField textField = new TextField("enter text here");
Button button = new Button("Submit");

panel.add(label);
panel.add(textField);
panel.add(button);
frame.add(panel);

frame.pack();
frame.validate();
frame.setVisible(true);
}
(Code snippet 7.1)

In dit stuk code wordt een frame, een panel en UI elementen aangemaakt. De UI elementen worden toegevoegd aan de panel, en de panel wordt toegevoegd aan het frame. De laatste regels zijn boilerplate code om het frame te laten zien. Dit ziet er vervolgens zo uit:

(Afbeelding 7.1)

Dit ziet er echter niet echt goed uit, Swing heeft echter de mogelijkheid om UI elementen in te delen met XML. Dit kan met de hand, of met een IDE, dit is bij dit onderzoek met IntelliJ gedaan. 

Met de editor van IntelliJ kunnen dezelfde UI elementen in de voorbeeldApplicatie geplaatst worden. Dit wordt hier gedaan in een class die Jframe extend. De class vertegenwoordigd dus een window. Dit is de indeling van UI elementen en code nu:

(Afbeelding 7.2)

Het resultaat ziet er vervolgens zo uit:

(Afbeelding 7.3)

Swing wordt echter natuurlijk voornamelijk gebruikt om interactieve applicaties te ontwikkelen, dit kan gedaan worden met listeners. Listeners kunnen aan een aantal UI elementen toegevoegd worden, en triggeren een stuk Java-code als ze getriggerd worden. Triggers kunnen bijvoorbeeld het klikken op een knop, het aanslaan van een toets op het toetsenbord of het hovereren over een UI element met een cursor zijn. Een action listener voor een klik actie op de submitknop in de vorige app ziet er bijvoorbeeld zo uit:

submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
//add code here
}
});

(Code snippet 7.2)

Met setters kunnen ook attributen van UI elementen aangepast worden, bijvoorbeeld de tekst in een tekstvak, de tekst op een label, of een knop "enabled" is, etc.

Code tussen de haken waar de comment staat wordt nu uitgevoerd als er op de knop gedrukt wordt. Met deze kennis is de volgende applicatie gemaakt:

(Afbeelding 7.4)

In deze applicatie kan er op de knoppen gedrukt worden om de tekst in het label te veranderen. De tekst wordt "Hello Computer!" of "Hello World!" als er gedrukt wordt op de "Computer!" of "World!" knop. Als er op de "Me!" knop gedrukt wordt wordt de ingevoerde tekst uit het tekstvak gehaald en achter "Hello" in het label geplakt. Als er "Jane" is ingevoerd wordt de tekst in het label bijvoorbeeld "Hello Jane!":

(Afbeelding 7.5)

Dit is gedaan door de getters en setters van het tekstveld en het label te gebruiken:

meButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
label.setText("Hello "+ naamField.getText()+"!");
}
});

(Code snippet 7.3)

Op deze manier kunnen er interactieve Swing applicaties gemaakt worden. Alle code van de gemaakte applicaties zijn te vinden op de repository.

Wat is het verschil tussen JavaFX en Swing?


Conclusie

Bronnen

  1. Lesson: Getting Started with Swing (The JavaTM Tutorials > Creating a GUI With Swing). (n.d.). https://docs.oracle.com/javase/tutorial/uiswing/start/index.html

  2. Hejazi, F. (2019, May 7). IntelliJ IDEA GUI Designer Tutorial. Examples Java Code Geeks. https://examples.javacodegeeks.com/java-development/desktop-java/ide/intellij-idea/intellij-idea-gui-designer-tutorial/
  3. Larkin, P. (2022, July 20). JavaFX vs Swing: The Key Differences | Career Karma. Career Karma. https://careerkarma.com/blog/javafx-vs-java-swing/
  4. How to set the look and feel (The JavaTM tutorials > Creating a GUI with Swing > Modifying the look and feel). (n.d.). https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html#available
  5. AnveshKumar. (2023, March 19). The battle of JavaFX vs Java Swing: Which one is best for you? DevDojo. https://devdojo.com/anvesh_kumar/the-battle-of-javafx-vs-java-swing-which-one-is-best-for-you
  6. Sun and Netscape to Jointly Develop Java Foundation Classes. (n.d.). https://web.archive.org/web/20120509230952/http://www2.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=%2Fwww%2Fstory%2F84048&EDATE=

  7. JavaFX CSS Reference Guide. (n.d.). https://openjfx.io/javadoc/17/javafx.graphics/javafx/scene/doc-files/cssref.html#node

  8. YaegerGame (yaeger 2023.2024 API). (n.d.). https://han-yaeger.github.io/yaeger/hanyaeger/com/github/hanyaeger/api/YaegerGame.html

  9. JavaFX Overview (Release 8). (n.d.). https://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm#JFXST784




  • No labels