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

Compare with Current View Page History

« Previous Version 18 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?

Het platform biedt een breed scala aan aanpasbare gebruikersinterfacecomponenten, zoals knoppen, tekstvelden, tabellen en grafieken, die kunnen worden gestileerd en aangepast om te voldoen aan de ontwerpvereisten van een applicatie. JavaFX maakt gebruik van FXML (FXML Markup Language), een op XML gebaseerde taal waarmee ontwikkelaars de structuur van de gebruikersinterface kunnen definiëren, waardoor de scheiding tussen de gebruikersinterface en de applicatielogica mogelijk wordt gemaakt.

CSS-styling kan worden toegepast om de vormgeving van de gebruikersinterface aan te passen, wat een flexibele manier biedt om de uitstraling van de applicatie te veranderen en een consistente gebruikerservaring te creëren. Met JavaFX kunnen ontwikkelaars krachtige 2D- en 3D-graphics creëren, inclusief ondersteuning voor animatie en speciale effecten. Hierdoor kunnen interactieve en visueel indrukwekkende gebruikersinterfaces worden ontworpen.

Bovendien bevat JavaFX ingebouwde ondersteuning voor het afspelen van audio- en videobestanden, evenals voor het weergeven van afbeeldingen en andere media-inhoud. Dit maakt multimedia-integratie mogelijk in JavaFX-applicaties. Een belangrijk voordeel van JavaFX is de platformonafhankelijkheid. JavaFX-toepassingen kunnen worden uitgevoerd op verschillende besturingssystemen, waaronder Windows, macOS en Linux, waardoor ontwikkelaars een breed publiek kunnen bereiken.

Al met al biedt JavaFX een uitgebreide set tools en bibliotheken waarmee ontwikkelaars snel en efficiënt interactieve en visueel aantrekkelijke desktopapplicaties en RIAs kunnen bouwen. Met zijn krachtige grafische mogelijkheden, flexibele lay-outopties en platformonafhankelijkheid is JavaFX een populaire keuze geworden voor het ontwikkelen van moderne Java-toepassingen.

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. Platformonafhankelijkheid: Swing-applicaties kunnen worden uitgevoerd op verschillende besturingssystemen zonder enige wijziging, dankzij de Java Virtual Machine (JVM).

  2. Uitgebreide GUI-componenten: Swing biedt een brede selectie van GUI-componenten die kunnen worden aangepast en uitgebreid om aan specifieke ontwerp- en functionaliteitseisen te voldoen.

  3. Modulariteit en uitbreidbaarheid: Ontwikkelaars kunnen eenvoudig op maat gemaakte componenten maken en integreren in hun Swing-toepassingen, waardoor een hoog niveau van flexibiliteit en aanpasbaarheid wordt geboden.

  4. MVC-architectuur: Door het volgen van het Model-View-Controller (MVC) ontwerppatroon vergemakkelijkt Swing de scheiding van concerns, waardoor de codebase schaalbaar en onderhoudsvriendelijk blijft.

  5. Geavanceerde lay-outbeheer: Swing biedt een krachtig lay-outmanagementsysteem waarmee ontwikkelaars complexe en dynamische gebruikersinterfaces kunnen maken.

Nadelen van Swing:

  1. Performance: Hoewel Swing-applicaties over het algemeen goed presteren, kunnen ze soms trager zijn dan native GUI-toepassingen, vanwege de overhead van de Java Virtual Machine en de interpretatie van bytecode.

  2. Uiterlijk: Hoewel Swing-componenten een consistent uiterlijk bieden op verschillende platforms, kunnen ze er soms minder 'native' uitzien dan de standaard GUI-componenten van het besturingssysteem.

  3. 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.

  4. Veroudering en minder actieve ontwikkeling: Hoewel Swing nog steeds wordt gebruikt en ondersteund, wordt de ontwikkeling ervan niet zo actief voortgezet als sommige modernere alternatieven zoals JavaFX. Dit kan op lange termijn enige invloed hebben op de beschikbaarheid van nieuwe functies en updates.

Samenvatting:

Swing blijft een krachtig frontend-framework voor het ontwikkelen van desktopapplicaties in Java. Met zijn platformonafhankelijkheid, uitgebreide GUI-componenten, modulariteit en MVC-architectuur biedt Swing ontwikkelaars een solide basis voor het bouwen van moderne en gebruiksvriendelijke gebruikersinterfaces. Hoewel het enkele nadelen heeft blijft Swing een populaire keuze voor Java-ontwikkelaars. 

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 IntelJ gedaan. 

Met de editor van IntelJ 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/









Oud 

Oud 

Oud 

Oud 

Oud 



Restful API

Een restful api is een serverapplicatie die requests kan handlen die het krijgt van een clientapplicatie, vaak een browser. Als de applicatie ontwikkeld zou worden als een RESTful server applicatie zou er een website bij ontwikkeld moeten worden die de server requests en responses verwerkt met behulp van javascript of PHP. Hiervoor is dus een website nodig, en een host machine.

Voor en nadelen van een Restful API

Voordelen:

  • Een user interface kan gemaakt worden met behulp van HTML en CSS, wat erg goed te stijlen is. Het kan dus precies gemaakt worden volgens de wensen van de opdrachtgever.
  • Een HTML frontend is makkelijker om responsive te maken, en dit maakt het gebruik op allerlijk soorten devices mogelijk.
  • Het is veel modulairder, met een goede specification kan iedereen een andere frontend ontwikkelen. 
  • Het is eenvoudiger om een beveiligde database connectie te leggen, omdat de database op dezelfde machine gehost kan worden als de API.
  • Alle teamgenoten zijn al bekend met RESTful apis en HTML frontends

Nadelen: 

  • Er moet een website ontwikkeld worden die los staat van de applicatie.
  • Er moet extra beveiliging gemaakt worden om de webapp te beveiligen tegen ongewenste gebruikers.
  • Er moet meer gehost worden dan alleen een database.
  • De webapp zou eventueel compatible gemaakt moeten worden met de bestaande wordpress website.

Beste keus voor een RESTful API

Bijna alle teamleden zijn al bekend met Jakarta EE Wildfly, maar er zijn ook andere opties zoals Spring of andere frameworks die aan de stack toe te voegen zijn. De belangrijkste technische keuzes die bij deze optie horen zijn de keuzes voor de frameworks die gebruikt worden voor de frontend, vooral de javascript frameworks om de JSON objecten correct af te handelen. Hier zou ook een onderzoek voor gedaan moeten worden.

Standalone GUI framework

De oude versie van Rokade is een standalone Delphi applicatie. De eisen van de opdrachtgever kunnen ook opgelost worden door het net als Rokade een standalone applicatie te maken met een GUI framework binnen Java.

Voor en nadelen van een GUI framework

Voordelen:

  • Een standalone applicatie kan eenvoudiger geconfigured worden voor een individuele user. 
  • De gebruikers van de applicatie zijn al bekend met het gebruiken van een standalone applicatie.
  • Frameworks als JavaFX zijn ook met CSS te stylen.
  • Als een open source project zijn standalone applicaties makkelijker om aan te passen.

Nadelen:

  • De meeste teamleden zijn niet bekend met GUI frameworks in Java.

Beste keus voor een GUI framework

Oracle heeft zelf een framework hiervoor die ingebouwd zit in openJDK, JavaFX. Hiervoor zijn ook plugins voor IntelJ om het ontwikkelen te stroomlijnen. Als alternatief op JavaFX zou Swing gebruikt kunnen worden, maar JavaFX was bedoelt als een opvolger op Swing



  • No labels