Technológiák összehasonlítása J2EE - PHP Csikor Ákos tes@inf.elte.hu ELTE IK
Bevezetés – J2EE Java Platform Enterprise Edition Készítette: Sun Microsystems Objektumorientált programozási nyelv Platformfüggetlen („Írd meg egyszer és futtasd bárhol”) JVM: Java Virtual Machine Nagyvállalatoknál használatos technológia Fejlesztés hordozható, robosztus, skálázható, biztonságos szerveroldali alkalmazások
Bevezetés – PHP PHP Hypertext Preprocessor Kitalálta: Rasmus Lerdorf Létrejötte után gyorsan fejlődött Jelenleg: Zend cég fejleszti Script programozási nyelv Oldalak dinamikus működéséhez Kis- és középvállalatoknak készült Jelenleg több mint 10 millió webhelyen található
Nyelvi elemek a JSP J2EE-ben és a PHP-ban Alapjaiban különböznek OOP ↔ Scriptnyelv Tag-ek: JSP: adott tag library-t milyen prefix segítségével PHP: egyszerűbb: <?php ?> Beágyazott kódok: JSP: engedélyezett a forráskódok beillesztése <h:inputText binding="#{backing_topic.topicName}" id="topicname" required="false” /> PHP: az csak így működik, nem lehet különválasztani <input type=”text” name=”felhasználónév”>
A megjelenítő és logikai réteg szétválaszthatósága Nagy méretű programoknál elkülönül Előnye: Egyszerre így akár két különböző csapat dolgozhat a különböző rétegeken Sokkal olvashatóbb rétegek J2EE: JSF: backing bean-ek kapcsolása JSP-khez JSP oldalon binding tulajdonsággal változót rendelni szerveroldalon Egy backing bean akár több oldalhoz is Action esetén String visszatérésű függvények (faces-config.xml-ben navigáció) PHP: Nem annyira áll távol egymáshoz képest a két réteg PHP mellett megjelennek a HTML elemek Keretrendszerrel lehetne a két réteget „szétválasztani”
Adatelérés J2EE: PHP: Entity Bean-eket használjuk az EJB rétegből Bean-ekhez a kezelő a Session Bean Bean-eket táblákhoz rendeljük egy Object-Relational Mapping-gel Adat = objektum PHP: Nincs ilyen réteg SQL parancsok gépelése a forráskódban A legtöbb adatbázishoz a függvények biztosítottak Adat = adat
Példakód - PHP <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Language" content="hu"> <title>Proba Php</title> <body> <?php if( isset($_POST["username"]) && !empty($_POST["username"]) && isset($_POST["username"]) && !empty($_POST["password"]) ) print "Username: " . $_POST["username"] . "<br />"; print "Password: " . $_POST["password"] . "<br />"; ?> <form id="form1" name="form1"> <input type="text" name="username" /><br /> <input type="password" name="password" /><br /> </form> </body> </html>
Példakód – J2EE (JSP file) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page contentType="text/html;charset=windows-1250"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <f:view> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Index</title> </head> <body> <h:form binding="#{backing_topic.form1}" id="form1"> <h:inputText binding="#{backing_topic.topicName}" id="topicname" required="false" /> <h:commandButton value="Add" style="font-family: Verdana, sans-serif, Arial; font-weight: normal; font-size: 11px; color: #404040; background-color: #fafafa; text-align: left; padding-left: 3px;" action="#{backing_topic.addTopicButton_action}" /> <br /> </h:form> </body> </html>
Példakód – J2EE (JSF file) public class Topic { private HtmlForm form1; private HtmlInputText topicName; . public void setForm1(HtmlForm form1) { this.form1 = form1; } public HtmlForm getForm1() { return form1; public void setTopicName(HtmlInputText topicName) { this.topicName = topicName; public HtmlInputText getTopicName() { return topicName; public void setTopic(HtmlInputText topicName){ cm.addTopics(topicName.toString()); public String addTopicButton_action(){ try{ cm.addTopics(topicName.getValue().toString()); catch(NullPointerException ex){ return "";
Technológiákat segítő fejlesztői környezetek Számos fejlesztői környezet Vannak fizetősek és ingyenesek Mégtöbb editor, ami csak a szintaxist ismeri Mindegyik internetről beszerezhető Mindkét technológiát kitaláló cég írt hozzá keretrendszert
J2EE fejlesztői környezetek NetBeans: www.netbeans.org Sun fejleszti, ingyenes Standard-tól enterprise-ig támogat GUI-t Drag’nDrop technikával Jelenleg: 6.0 Beta2, 5.5.1 stabil
J2EE fejlesztői környezetek JDeveloper Studio Edition: http://www.oracle.com/technology/products/jdev/ Oracle fejleszti, ingyenes, adatbázisához Jelenleg: 11.1.1, 10.1.3.3
J2EE fejlesztői környezetek Eclipse: www.eclipse.org Ingyenes, nagyon sok plugin van hozzá Nagyon sok programozási nyelvet ismer Jelenleg: 3.3.1.1
PHP fejlesztői környezetek Zend Studio: www.zend.com Zend fejleszti, egyik legnagyobb, fizetős($254) lassú, beépített webserver
PHP fejlesztői környezetek NuSphere PhpED: www.nusphere.com NuSphere fejleszti, másik legnagyobb, fizetős ($249), beépített webserver
Fejlesztői környezetek Funkcionalitásukban megegyeznek: Kinézetük: ProjectExplorer: projectünket láthatjuk fa struktúrában ServerExplorer: projektünket nézhetjük a háttértároló szemszögéből ComponentPalette: GUI-hoz a grafikai elemek ConnectionExplorer: adatbázis menedzseléséhez Refactoring … Dokumentációgenerálás Javadoc, PHPDocumentor Működésük megegyezik
Összegzés Másképp és más célból születtek Célközönségük különböző J2EE: nagyvállalat PHP: kis- és középvállalat PHP egyszerű nyelv – sokan ismerik J2EE sokkal komplexebb – komoly háttértudás
Köszönöm a figyelmet ! Csikor Ákos Technológiai összehasonlítás J2EE – PHP ----------------------------------------------------------- Csikor Ákos tes@inf.elte.hu ELTE IK