A tantárgy adatlapja
1. A képzési program adatai
1.1 Felsőoktatási intézmény	Babeș–Bolyai Tudományegyetem	
1.2 Kar 	Matematika és Informatika Kar	
1.3  Intézet	Magyar Matematika és Informatika Intézet	
1.4 Szakterület	Informatika	
1.5 Képzési szint	Alapképzés	
1.6 Szak / Képesítés	Informatika	

2. A tantárgy adatai
2.1 A tantárgy neve	Osztott rendszerek programozása – Java platformok	
2.2 Az előadásért felelős tanár neve	dr. Simon Károly	
2.3 A szemináriumért felelős tanár neve	dr. Simon Károly	
2.4 Tanulmányi év	3	2.5 Félév	2	2.6. Értékelés módja	kollokvium	2.7 Tantárgy típusa	opcionális – szak	

3. Teljes becsült idő (az oktatási tevékenység féléves óraszáma)
3.1 Heti óraszám	3	melyből: 3.2 előadás	2	3.3 szeminárium/labor	0/1	
3.4 Tantervben szereplő össz-óraszám	42	melyből: 3.5 előadás	28	3.6 szeminárium/labor	0/14	
A tanulmányi idő elosztása:	Óra	
A tankönyv, a jegyzet, a szakirodalom vagy saját jegyzetek tanulmányozása	24	
Könyvtárban, elektronikus adatbázisokban vagy terepen való további tájékozódás	24	
Szemináriumok / laborok, házi feladatok, portofóliók, referátumok, esszék kidolgozása	56	
Egyéni készségfejlesztés (tutorálás)	0	
Vizsgák	4	
Más tevékenységek: ..................	0	
3.7 Egyéni munka össz-óraszáma	108	
3.8 A félév össz-óraszáma	150	
3.9 Kreditszám	6	

4. Előfeltételek (ha vannak)
4.1 Tantervi	•	Nincs	
4.2 Kompetenciabeli	•	Fejlett programozási módszerek és környezetek, Java SE, tervezési minták, software engineering	
5. Feltételek (ha vannak)
5.1 Az előadás lebonyolításának feltételei	•	Videoprojektorral és táblával felszerelt előadóterem	
5.2 A szeminárium / labor lebonyolításának feltételei	•	Számítógépekkel felszerelt laborterem, a gépeken a megfelelő szoftverekkel, hozzáférés a megfelelő szerverekhez (Java EE, Eclipse for Java EE Developers + megfelelő beépülő modulok, Tomcat webszerver vagy Glassfish alkalmazásszerver, MySQL adatbázisszerver) 	

6. Elsajátítandó jellemző kompetenciák
Szakmai kompetenciák	•	a Java programozási nyelvvel és standard Java platformmal kapcsolatos közép-haladó szintű ismeretek
•	osztott vállalati rendszerekkel kapcsolatos alapfogalmak és technológiák ismerete
•	Java web programozási technológiák alapjainak elsajátítása
•	osztott rendszerek megvalósítási lehetőségeinek ismerete, távoli objektumok elérése, távoli metódushívások, kapcsolódó API-k és standardok ismerete
•	néhány hálózati programozással és osztott rendszerekkel kapcsolatos modern keretrendszer ismerete	
Transzverzális kompetenciák 	•	Önálló tanulás, kritikus gondolkodás, problémabeazonosítás és feladatmegoldás
•	Összetettebb projekteknél (pl. vállalati alkalmazások) alkalmazott módszerek, stratégiák, technológiák elsajátítása	

7. A tantárgy célkitűzései (az elsajátítandó jellemző kompetenciák alapján)
7.1 A tantárgy általános célkitűzése	•	a Java programozási nyelvvel és standard Java platformmal kapcsolatos ismeretek felfrissítése, bizonyos kapcsolódó fogalmak részletesebb tárgyalása, kiegészítő témakörök bemutatása, az ismeretanyag elmélyítése
•	osztott vállalati rendszerekkel kapcsolatos bevezető témakörök, használt technológiák bemutatása
•	a Java web programozási technológiák alapjainak elsajátítása
•	osztott rendszerek megvalósításának lehetőségei, távoli objektumok elérése, távoli metódushívások, kapcsolódó API-k és standardok megismerésre
•	néhány hálózati programozással és osztott rendszerekkel kapcsolatos modern keretrendszer bemutatása
•	Java alapú, mobileszközökön működő alkalmazások fejlesztési lehetőségeinek bemutatása Java-ban	
7.2 A tantárgy sajátos célkitűzései

	•	Java SE – ismeretek ismétlése, rendszerezése, kiegészítése
•	Adatbázisok elérése Java-ban, kapcsolódó API-k és minták (JDBC, Abstract DAO Factory, stb.) megértése
•	XML állományok feldolgozása Java-ban, osztott rendszerekkel kapcsolatos felhasználási lehetőségek (konfiguráció, building, kommunikáció), kapcsolódó eszközök (pl. Ant), protokollok (pl. SOAP) bemutatása
•	Java web programozási technológiák alapjainak (servlet, JSP, JSTL) elsajátítása
•	Távoli metódushívásokon alapuló osztott rendszerek megvalósítása (CORBA, RMI)
•	Webszolgáltatásokkal kapcsolatos alapismertek elsajátítása
•	Hálózati és web programozással, osztott rendszerekkel kapcsolatos keretrendszerek megismerése (pl. Apache Mina, Struts, JSF stb.)
•	Mobileszközökön működő alkalmazások fejlesztése (Java ME, Android)	

8. A tantárgy tartalma
8.1 Előadás	Didaktikai módszerek	Megjegyzések	
1.	Java ismétlés és kiegészítések – I. rész
•	Nyelvi alapok, objektumorientált programozás Java-ban - ismétlés
•	Kivételkezelés részletesebben – kapcsolódó minták, receptek
•	Naplózás, naplózási keretrendszerek (Java Logging API, Log4j)	magyarázat, vetítés, konverzáció, példák		
2.	Java ismétlés és kiegészítések – II. rész
•	Grafikus felhasználói felületek – az AWT és SWING eszköztárak ismétlése
•	Eseménykezelés általánosabban – példák
•	Grafika és Appletek – ismétlés
•	Properties objektumok
•	Nemzeköziesítés és lokalizáció
•	A sandbox mechanizmus, biztonsággal kapcsolatos megoldások	magyarázat, vetítés, konverzáció, példák		
3.	Java ismétlés és kiegészítések – III. rész
•	Végrehajtási szálak: alapfogalmak ismétlése, szinkronizálás, érvénytelenített metódusok helyettesítése
•	Adatfolyamok: adatfolyamokkal és állománykezeléssel kapcsolatos alapfogalmak ismétlése, a Java szerializálási mechanizmusa, a pipeline mechanizmus
•	Gyűjtemény keretrendszer és generikus típusok – ismétlés
•	A hálózati programozás alapjai - ismétlés	magyarázat, vetítés, konverzáció, példák		
4.	Adatbázisok elérése 
•	A JDBC API
•	Többrétegű szoftverarchitektúrák
•	A DAO Factory tervezési minta	magyarázat, vetítés, konverzáció, példák		
5.	XML feldolgozás, alkalmazás osztott rendszerek fejlesztésénél
•	XML érvényességének vizsgálata (DTD, XSD)
•	XML feldolgozók (DOM, SAX)
•	XML transzformációk (XSLT)
•	XML konfigurációs állományok
•	Apache Ant
•	SOAP alapok	magyarázat, vetítés, konverzáció, példák		
6.	Java web-programozási technológiák alapjai – I. rész
•	Java EE
•	Java web-alkalmazások
•	A Java Servlet technológia
•	Szessziókövetés
•	Szűrők	magyarázat, vetítés, konverzáció, példák		
7.	Java web-programozási technológiák alapjai – II. rész
•	Az MVC elv és a webes alkalmazások
•	A JavaServer Pages technológia
•	JSP elemkönyvtárak	magyarázat, vetítés, konverzáció, példák		
8.	Távolsági metódushívásokon alapuló kliens-szerver alkalmazások
•	az általános modell (egy Distributed Object Application általános modellje, távoli interfészek, objektumok, metódusok)
•	CORBA (Common Object Request Broker Architecture)
o	általános bevezető, OMG
o	CORBA összetevők (a kliens és a szerver oldal)
o	az IDL (Interface Definition Language), IDL-Java leképezés
o	CORBA alapú alkalmazások fejlesztése (példa)
•	RMI (Remote Method Invocation)
o	a Java RMI API
o	RMI alapú alkalmazások fejlesztése (a fejlesztés lépései, a szerver és kliens létrehozása)
o	RMI alapú alkalmazások futtatása
o	biztonsági mechanizmusok: class loaders, security managers, protection domains, kriptográfiai algoritmusok és a JCE (Java Criptography Extension), digitális aláírások	magyarázat, vetítés, konverzáció, példák		
9.	Webszolgáltatások
•	Alapfogalmak
•	SOAP, WSDL
•	JAX-WS, JAX-RS
•	REST, RESTful WS	magyarázat, vetítés, konverzáció, példák		
10.	Keretrendszerek – I. rész
•	A java.nio csomag
•	Az Apache MINA keretrendszer	magyarázat, vetítés, konverzáció, példák		
11.	Keretrendszerek – II. rész
•	A Struts MVC
•	A Struts keretrendszer	magyarázat, vetítés, konverzáció, példák		
12.	Keretrendszerek – III. rész: JSF
•	A JSF MVC modell
•	Navigáció
•	Backing bean-ek
•	UI komponensmodell
•	Konverzió és validáció
•	Események és figyelők	magyarázat, vetítés, konverzáció, példák		
13.	Mobileszközökön működő Java alkalmazások készítése
•	A Java ME platform bemutatása
•	Az Android rendszer áttekintése
•	Az Android platform
•	Android alkalmazások összetevői (Activity, Service, Intent, content providers, async tasks, broadcast receivers stb.)
•	Android fejlesztések alapjai	magyarázat, vetítés, konverzáció, példák		
14.	Bevezető a Java vállalati fejlesztéseket támogató platformok alkalmazásába
•	A Java EE platform
•	Alkalmazásszerverek
•	EJB alapok	magyarázat, vetítés, konverzáció, példák		
Könyvészet
1.	Simon K., Kenyerünk Java, Egyetemi Kiadó, Kolozsvár, 2010.
2.	Rubinger A.L., Burke B., Enterprise Java Beans 3.1, 6th edition, O’Reilly, 2010.
1.	Zigurd Mednieks, Laird Dornin, G. Blake Meike, Masumi Nakamura, Programming Android, O'Reilly, 2011
3.	***, The Java Tutorial, Sun Microsystems, Inc, 2004. http://java.sun.com/docs/books/tutorial/index.html
4.	***, CORBA/IIOP Specifications, OMG, http://www.omg.org/technology/documents/corba_spec_catalog.htm
5.	***, RMI Tutorial, Sun Microsystems, 2008.
http://java.sun.com/docs/books/tutorial/rmi/index.html
6.	***, JDBC Tutorial, Sun Microsystems, 2008.
http://java.sun.com/docs/books/tutorial/jdbc/index.html
7.	***, Java Servlet Technology Documentation, Sun Microsystems,
http://java.sun.com/products/servlet/docs.html
8.	***, JSP Documentation
http://www.oracle.com/technetwork/java/javaee/jsp/index.html
9.	***, JSF Documentation
http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html
10.	***, Apache MINA Documentation
http://mina.apache.org/
11.	***, Apache Struts Documentation
http://struts.apache.org/	
8.2 Szeminárium / Labor	Didaktikai módszerek	Megjegyzések	
Szeminárium: nincs			
Labor + projekt:			
1.	Kliens-szerver alapú hálózati alkalmazás létrehozása, az eseményfigyeléssel, szinkronizálással, kivételkezeléssel és naplózással kapcsolatos új ismeretek alapján. (L1, L2)
2.	Swing alapú grafikus felülettel rendelkező alkalmazás létrehozása, amely a JDBC API-n keresztül kapcsolatot teremt egy MySQL adatbázissal, a tanult tervezési mintáknak megfelelően. (L3, L4)
3.	A második laborfeladat nemzetköziesítése (L5)
4.	Java web alkalmazás létrehozása, Servlet API, JSP és JSTL felhasználásával (+JDBC alapú adatbázis-hozzáférés, naplózás, nemzetköziesítés, jogosultságok kezelése szűrők alkalmazásával)	Feladatmegoldás		
Könyvészet	
1.	Simon K., Kenyerünk Java, Egyetemi Kiadó, Kolozsvár, 2010.
2.	***, The Java Tutorial, Sun Microsystems, Inc, 2004. http://java.sun.com/docs/books/tutorial/index.html
3.	***, JDBC Tutorial, Sun Microsystems, 2008.
http://java.sun.com/docs/books/tutorial/jdbc/index.html
4.	***, Java Servlet Technology Documentation, Sun Microsystems,
http://java.sun.com/products/servlet/docs.html
5.	***, JSP Documentation
http://www.oracle.com/technetwork/java/javaee/jsp/index.html	
9. Az episztemikus közösségek képviselői, a szakmai egyesületek és a szakterület reprezentatív munkáltatói elvárásainak összhangba hozása a tantárgy tartalmával.
•	A tantárgy tematikája nagy átfedést mutat az egyetemi oktatásban a fontosabb egyetemeken oktatott hasonló tematikájú tantárgyak tartalmával.
•	A tananyagok kidolgozása nemzetközileg elismert szerzők munkái alapján történt, az ajánlott könyvészet szintén a terület releváns munkái alapján van összeállítva.
•	A tantárgy keretein belül oktatott témák szükségesek a szoftverfejlesztői iparban történő elhelyezkedéshez, a cégek elvárják az ilyen jellegű ismereteket.	

10. Értékelés
Tevékenység típusa	10.1 Értékelési kritériumok	10.2 Értékelési módszerek	10.3 Aránya a végső jegyben	
10.4 Előadás 	Vizsgafeladatok, bemutatott fogalmak és módszerek ismerete	Írásbeli vizsga	40%	
				
10.5 Szeminárium / Labor	Laborfeladatok 	A megoldások pontozása	40%	
	Laborvizsga	A megoldások pontozása	20%	
10.6 A teljesítmény minimumkövetelményei	
Az átmenő jegy feltételei:
•	A végső jegyet meghatározó minden komponens esetén kötelező az átmenő jegy (min. 5-ös).
•	A végső jegy minimálisan 5-ös.	
Kitöltés dátuma			Előadás felelőse			Szeminárium felelőse
2012.09.25				dr. Simon Károly			dr. Simon Károly
Az intézeti jóváhagyás dátuma				Intézetigazgató	
..........................						dr. Szenkovits Ferenc