BoXie schreef op donderdag 06 oktober 2005 @ 15:59:
Ik ben zelf tot nu toe vooral een PHP/MySQL/Apache (LAMP) scripter met af en toe wat Object Oriented Progr. ervaring (PEAR etc). Echter, PHP is CV-technisch nog niet zo heel erg interessant. Java daarintegen wordt ontzettend veel gebruikt in het bedrijfsleven.
Echter, waar te beginnen ? Op Sun.com vind je een wirwar aan termen, discplines, platformen SDK's etc ... (J2SE, J2EE, Javabeans, JSP, Swing etc).
Ik onderscheid een paar Java disciplines:
- J2SE 1.4.2 / 5 : Nogal flink versie verschil .. hoe dat zo ?
Dit heeft nog iemand goed uitgelegd dus ik zal eens een poging doen
In den beginne had je Java 1.0 (ok, voor de puristen, er was daarvoor nog Oak maar die slaan we even over). Goed, vrij snel daarna kwamen er updates zoals 1.1 die alleen features aan de toen karige standaard library toevoegde. Op het moment dat er language features toegevoegd werden (oa inner classes) vond de marketting department het tijd om het Java 2 te noemen. De programmeurs wilden echter de 1.x nummering aanhouden. Op onnavolgbare reden is het toen Java 2 en Java 1.2 tegelijk geworden. De grote revesie daarna had geen taal veranderingen, en kon dus volgens de filosophie van de marketting mensen geen Java 3 worden. Wederom was het niet te volgen, maar het werd toen Java 2 - Standard Edition 1.3, afgekort naar J2SE 1.3. Daarna kwam nog J2SE 1.4 en J2SE 1.4.2 etc. Op dat moment was de 1.x het versie nummer geworden, en was de naam van de taal "Java2" waarbij de 2 eigenlijk geen betekenis meer had als zijnde een versie nummer.
De huidige versie van Java had volgens de geldende regels Java 3 - Standard Edition 1.5 (J3SE 1.5) moeten gaan heten (er zaten weer een paar nieuwe language features in), maar iemand besloot dat 1.5 te laag klonk, en dat veel mensen de taal in de afkorting niet meer als Java kende, maar als "Java2". Het werd dus J2SE 5.0.
Een aantal maanden geleden is echter besloten dat de taal toch weer gewoon Java moet gaan heten, omdat de 2 toch een versie nummer impliceert wat het niet meer is. Nu spreken we dus van Java Standard Edition 5 en over een jaar Java Enterprise Edition 5.
- J2EE 1.4 : Er is ook een J2EE 5 .. die is nog in ontwikkeling ofzo ?
J2EE 1.4 is inderdaad de huidige versie. Java Enterprise Edition 5 (voorheen J2EE 1.5 of J2EE 5.0 genoemt) wordt verwacht over iets minder dan een jaar.
- JSP : Soort tegenhanger van PHP / ASP etc
JSP in de ouderwetse vorm is exact PHP, met het 'kleine' verschil dat de syntax natuurlijk Java is.
Bv:
Java Server Page:
1
2
3
4
5
6
7
| <html>
<body>
<% if ( doPrint == true ) { %>
Hallo mijn naam is <%=firstName + " " + lastName%>, wat is jouw naam?
<% } %>
<body>
</html> |
Als PHP'er zul je je hier waarschijnlijk meteen thuisvoelen. Je hoeft geen echt OO te kennen en het verschil in syntax heb je in 1 dag geleerd.
Het punt is dat deze style outdated is. Net zoals in PHP heb je hier het risico dat mensen bakken met business logic meteen op de pagina zetten. Ook al is het 'echt' Java, als je op deze manier Java toepast heet het officieel toch scripting.
De nieuwere style JSP's verbieden eigenlijk deze vorm. Hoewel het nog steeds kan, wordt het als zeer ongewenst gezien om in PHP-style te werken. Modernere JSP pagina's gebruiken alleen speciale serverside tags en een versimpeld taaltje dat Expression Language heet.
Een moderne JSP ziet er dus eerder zo uit:
Java Server Page:
1
2
3
4
5
6
7
| <html>
<body>
<c:if test="${mybean.doPrint}" >
Hallo mijn naam is <c:out value="${mybean.fullName}">, wat is jouw naam?
</c:if>
<body>
</html> |
In dit kleine voorbeeld zie je nog niet zo veel verschil, maar vooral bij grotere pagina's valt het erg op. -Het- idee van EL is dat je er eigenlijk geen hele stukken code mee -kunt- schrijven. De bedoeling is om alle je code in java classes te zetten die van alles berekenen en data in ruwe vorm klaarzetten en dan op je JSP pagina met een minimaal aan EL (alleen heel simpele testen en iteratie's) je HTML pagina te genereren.
(je kunt met EL ook wel een beetje het scripten emuleren, zo kun je via <c:set> met variabelen werken, en expressies als ${firstName + " " + lastName} bestaan ook, maar het idee is dat de java classe (bean) echt alles klaarzet en je in je JSP alleen maar direct HTML genereerd).
Om een beetje op deze wijze te kunnen werken moet je dus iets abstracter kunnen denken, en moet je ook de beginselen van OO en Java zelf wel kennen.
Een moderne JSP pagina zelf bevat dus een minimum aan logica. De opvolger staat echter ook al weer voor de deur. Hier wordt de logica nog verder gereduceerd. Je zet zelfs geen testen en eigenlijk ook geen iteraties meer op je pagina, maar beschrijft alleen nog de layout door zogenaamde componenten te plaatsen. De code achter deze componenten bepalen of ze wel of niet "getekend" gaan worden. Deze opvolger (technisch niet juist om het zo te noemen, maar even voor het gemak) heeft JSF wat staat voor Java Server Faces. Dit moet je nu nog apart downloaden (net zoals je Swing vroeger apart moest downloaden), maar zal volgende jaar standaard in JEE 5.0 zitten.
Aan de ene kant is JSF makkelijker voor designers, maar mischien moeilijker voor beginnende programmeurs. Voor de moderne JSP variant hoef je slechts de beginselen van OO te kennen, maar voor JSF moet je toch wel het hele OO concept begrijpen.
- Het grote verschil tussen J2SE en J2EE .... Naar mijn idee is J2EE een 'corporate / server' platform van Java dat vooral op applicatieservers draait en veel gebruik maakt van webservices / xml(-rpc) etc
Het is al een beetje gezegt maar dit is net niet helemaal de goede omschrijving. In eerste instantie is J2EE inderdaad een zooi extra libraries (packages). Ten tweede draai je J2EE niet boven op een applicatie server, maar de applicatie server IS J2EE. Anders gezegd kun je de applicatie server zien als de uitgebreide java virtual machine die in staat is om J2EE applicaties te draaien.
Het belangrijkste verschil tussen deze "uitgebreide VM" en de standaard VM is dat:
-je applicaties start door deze naar een speciale dir te copieeren en dan via je browser een request te doen.
-je meerdere applicaties per VM kan hebben draaien (normaal Java is 1 app per VM)
-je applicaties hun input via de HTTP request binnen kunnen krijgen
- Is het zo dat je, als je J2EE wilt 'leren' .. je eerst J2SE onder de knie moet krijgen ? De basis zeg maar ?
Eigenlijk wel ja. Iniedergeval natuurlijk de taal Java en de algemene OO concepten, en ten tweede de algemene functies van de J2SE library. Je hoeft niet heel J2SE te kennen voor J2EE. Veel functionaliteit in de J2SE library heeft te maken met het bouwen van grafische user interfaces (AWT/Swing). Voor J2EE toepassingen hoef je deze eigenlijk niet te kennen.
Omdat het moderne J2EE serverside programmeren weer op client side gaat lijken (widgets, events, etc) is het toch wel handig om kennis van Swing te hebben, maar zeker voor de klassieke aanpak (oude of moderne JSPs) niet noodzakelijk.
[quote]
- Waar begin ik in het leertraject ? Welke discipline start ik mee .. hoe ga ik verder en welke software kan ik het beste installeren om een 'leuk en nuttige' ontwikkelomgeving op mijn pc te creëren (SDK ? IDE ? Ecplise ? Netbeans ? BlueJ ).
Makkelijkste begin: J2SE 5 SDK, Eclipse 3.1 en hello world applicatie'tje maken met Swing. Sommige mensen zweren er echter bij dat iedereen met de bare compiler (in dit geval javac) en een teksteditor (bv notepad) met een commandline hello world moet beginnen.
Ik heb een aantal jaren les gegeven in programmeren en merkte toch wel dat ook een behoorlijk aantal mensen toch de voorkeur heeft aan meteen met een IDE beginnen en iets wat meteen iets grafisch laat zien. Voor schrikbarend veel mensen is de commandline en een handmatige javac commando (hoe simpel ook) toch intimiderender dan een IDE installeren, de menu opties voor een new project en een nieuwe file zoeken, en dan de build en run menu items zoeken.
Iniedergeval ziet een standaard Hello world app er zo uit (zie google):
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
| import javax.swing.*;
public class HelloWorldSwing {
public static void main(String[] args) {
JFrame frame = new JFrame("HelloWorldSwing");
final JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
} |
en een commandline versie:
Java:
1
2
3
4
5
6
| public class HelloWorldSwing {
public static void main(String[] args) {
System.out.println( "hello, world" );
}
} |
Lang verhaal geworden eigenlijk, maar hopelijk heb je er nog iets aan
[
Voor 3% gewijzigd door
Verwijderd op 07-10-2005 00:42
]