SlideShare une entreprise Scribd logo
1  sur  69
Life after Java (...η ζωή μετά) Reusing code and skills in a .NET world
Θέματα Java- OOP γλώσσα vs πλατφόρμα Java vs C# Components & Controls vs JavaBeans PME (Property – Method – Event) model JUMP & J# Java – COM bridges IKVM.net  Web Services WSRP : Web Services for Remote Portlets
Java ως OOP γλώσσα Κληρονομικότητα, πολυμορφισμός, δυναμικό φόρτωμα κλάσεων, εξαιρέσεις... Μεγάλη συμπάθεια και αναγνωρισμένη πορεία στον ακαδημαϊκό χώρο  Πληθώρα σχετικών βιβλιοθηκών και λογισμικού, κυρίως ανοιχτού κώδικα Αρκετοί νέοι προγραμματιστές μυημένοιστη γλώσσα Java στις σπουδές τους
Java ως πλατφόρμα Java 1.x –command line, AWT και Applets Java 1.2, 1.3, … = Java 2 (JFC/Swing, …) JavaSE (= Standard Edition – Desktops) JavaEE (= Enterprise Edition – Servers) JavaME (= Micro Edition – Mobiles) (Re)focus  JavaFX (Java vs JavaScript)
Το μέλλον της Java; Αλλαγή προτεραιοτήτων Sun Microsystems  Oracle JDeveloper vs NetBeans IDE Java Cloud, Java.net  Kenai Java.net Θέματα πνευματικών δικαιωμάτων Sun vs Microsoft (MSJVM) Oracle vs Google (Android Dalvik VM) Μη προτυποποίηση από καταξιωμένους διεθνείς οργανισμούς (ISO pull-out)
Οικονομικές  & εργασιακές συνθήκες: Ανταγωνιστικές  Ευμετάβλητες  Κινητικότητα εργαζομένων Επαναχρησιμοποίηση: Κώδικα  Δεξιοτήτων   Ευελιξία = πολύτιμος σύμμαχος
Java vs C# Anders Hejlsberg  αρχικός συγγραφέας της Turbo Pascal chief architect του Delphi J++, WFC (Windows Foundation Classes) lead architect της C# LINQ (Language Integrated Query) C# = Java + Object Pascal (Delphi) + VB ++
Components Unstructured Data Record = Structured, Addressable (Name, Pos) Data Object = Record + Methods to manipulate its data Component = Object + PME + Resources (Packaging)  Agent = Component + (Internal) Logic / Program Loop
Controls / Widgets Control / Widget = User Interface Component JavaBeans: Components (non visible) Controls (συνήθως JFC/Swing /Model-ViewController [M-VC]) Enterprise JavaBeans αντίστοιχα με COM+ components (καμία σχέση με τυπικά JavaBeans) για J2EE
PME (Property-Method-Event) Properties (get/set accessors, metadata) Methods (OOP) Events Java: αρχικά tightly-coupled (base classes / abstract methods), έπειτα callback interfaces VB: method signatures (WithEvents) Object Pascal / Delphi: method variables C#: delegates
JUMP & J# (Microsoft) JUMP Import Java “projects” από Visual Studio Μετατροπή κώδικα Java σε C# J# Java compiler  IL code αντί Java bytecode Java datatype boxing Java 1.x class library, Swing & Collections API Μέχρι και το Visual Studio 2005
Java – COM/.NET bridges (1) JACOB (OpenSource) COM Automation από Java μέσω JNI wrappers jacoZoom ActiveX Controls / Servers ([D]COM / Automation) J-Integra .COM DCOM wire protocol (ORPC) σε pure Java J-Integra .NET .NET Remoting wire protocol σε pure Java, Visual Studio & Eclipse plugins
Java – COM/.NET bridges (2) COMConnect Java  COM/.NET – stateful TCP, low latency Jni4net (OpenSource) intra-process, object oriented, JNI implementation JNBridgePro Visual Studio & Eclipse plugins, shared memory, sockets, network binary protocol, HTTP/SOAP EZ JCom JavaCOM/.NET, drag-drop Swing components
Java – COM/.NET bridges (3) Java Plug-in (JavaBeans Bridge for ActiveX) Sun/Oracle Java VM, Web Browser integration, JavaBeans ActiveX controls (typelibrary) Java C# Bridge (OpenSource) Serlializing/DeserlializingJava - C# αντικείμενα, χειρονακτική συγγραφή C# αντικειμένουή χρήση generic JavaObjectκαι δυναμικό query Caffeine (OpenSource) Hosting JVM σε .NET Runtime,JNI OOP wrapper R-JAX (pioneering, RMI/HTTP, obsolete)
JNBridgePro – Call Java from .NET
JNBridgePro – Call Java from .NET (1)
JNBridgePro – Call Java from .NET (2) Start Proxy Generator
JNBridgePro – Call Java from .NET (3) Edit Classpath
JNBridgePro – Call Java from .NET (4) Class Path Entries
JNBridgePro – Call Java from .NET (5) Load Classes
JNBridgePro – Call Java from .NET (6) Load Classes Progress
JNBridgePro – Call Java from .NET (7) Choose Proxies
JNBridgePro – Call Java from .NET (8) Generate Proxies
JNBridgePro – Call Java from .NET (9) Use the Proxies
JNBridgePro – Call Java from .NET (10) Call Java Methods
JNBridgePro – Call Java from .NET (11) Run the Program
JNBridgePro – Call Java from .NET Visually generate proxies: allow .Netaccess Java classes Link .NET proxy assembly to .NET development project (Add Reference) Write .NET code to access Java classes(with IntelliSense) Edit configuration - specify communications mechanism (from in-process on same machine to cross-network) Run integrated .NET and Java code (managed lifecycles)
JNBridgePro – Call .NET from Java
JNBridgePro – Call .NET from Java (1)
JNBridgePro – Call .NET from Java (2) Start Proxy Generator
JNBridgePro – Call .NET from Java (3) Add Assembly
JNBridgePro – Call .NET from Java (4) Assembly List Entries
JNBridgePro – Call .NET from Java (5) Load Classes
JNBridgePro – Call .NET from Java (6) Load Class Progress
JNBridgePro – Call .NET from Java (7) Choose Proxies
JNBridgePro – Call .NET from Java (8) Generate Proxies
JNBridgePro – Call .NET from Java (9) Use the Proxies
JNBridgePro – Call .NET from Java (10) Call .NET Objects
JNBridgePro – Call .NET from Java (11) Run the Program
JNBridgePro – Call .NET from Java Visually generate proxies: allow Java access .NET  classes Reference Java proxy .JAR file from Java development project (place in build CLASSPATH) Write Java code to access .NET classes Edit configuration - specify communications mechanism (from in-process on same machine to cross-network) Run integrated .NET and Java code (managed lifecycles)
JNBridgePro – Visual Studio plugin
JNBridgePro – Eclipse plugin
JNBridgePro – Communications
IKVM.net (Jeroen Frijters) Υλοποίηση Java Εικονικής Μηχανής (JVM): Microsoft .NET Framework Mono Συστατικά: Java Virtual Machine σε .NET Java class libraries σε .NET Εργαλεία διαλειτουργικότητας Java -.NET
IKVM.net – σενάρια χρήσης Χρήση ωςτυπική Java Virtual Machine (JVM) Χρήση βιβλιοθηκών Java σε εφαρμογές .ΝΕΤ Ανάπτυξη εφαρμογών .NET σε γλώσσα Java
IKVM.net – σενάρια χρήσης Χρήση ωςτυπική Java Virtual Machine (JVM) java -jar myapp.jar ikvm -jar myapp.jar
IKVM.net – σενάρια χρήσης Χρήση βιβλιοθηκών Java σε εφαρμογές .ΝΕΤ ikvmc  = Java bytecode  .NET IL ikvmc -target:library mylib.jar mylib.dll π.χ. Apache FOP  = XSL-FO  processor (XML  PDF)
IKVM.net – σενάρια χρήσης Ανάπτυξη εφαρμογών .NET σε γλώσσα Java ikvmc  = Java bytecode  .NET IL ikvmc -target:exe myapp.jar myapp.exe
IKVM.net Κλήση .NET API από Java(IKVM.net JVM) ikvmstub = Java stubs από .NETAPI ikvmstub mscorlib.dll  mscorlib.jar ikvmstub c:ibylib.dll
IKVM.net – ενσωμάτωση / εργαλεία Mono (OpenSource .NET από Novell) MonoDevelop (IDE) Ant (task για ikvmc) Jar2ikvmc(φάκελος από εξαρτημένα JAR)
IKVM.netintegration Ant task για ikvmc  <ikvmc target="exe" out="hello.exe"          home="c:/ikvm-0.36.0.11" version="1.0.0.0“        debug="true“ main="net.sf.ant-ikvmc.Hello">    <fileset dir="${build}">        <include name="**/*.class"/>     </fileset>    <fileset dir="${lib}">        <include name="**/*.jar"/>    </fileset> </ikvmc>
IKVM.netintegration Jar2ikvmc(φάκελος από εξαρτημένα JAR) jar2ikvmc.exe JFreeChart JFreeChart2Net.cmd  ikvmc swtgraphics2d.jar -target:library ikvmc servlet.jar -target:library ikvmc junit.jar -target:library ikvmc jcommon-1.0.10.jar -target:library ikvmc gnujaxp.jar -target:library  ikvmc itext-2.0.2.jar -target:library -r:gnujaxp.dllikvmc jfreechart-1.0.6.jar -target:library -r:jcommon-1.0.10.dll ->-r:servlet.dll -r:gnujaxp.dll ...
Web Services Restlet (Java web framework) Expose/Consume RESTful web APIs Java Web Services Stack (Metro) JAX-WS (Java API for XML Web Services) JAXB (Java Architecture for XML Binding) WSIT (Web Services Interoperability Technologies [aka Project Tango]) WSIT (Tango) αντιστοιχεί στο WCF (Indigo)
Web Services for Remote Portlets Portlet = αλληλεπιδραστικό στοιχείο εφαρμογής, παράγει τμήματα markup, συγκεντρώσιμα και εμφανιζόμενα σε portals WSRP = αλληλεπιδραστικά web services εστιασμένα στην παρουσίαση.  content & apps: discoverable & pluggable
Web Services for Remote Portlets Γιατί WSRP αντί απλά Web Services; Localization Mime types Portlet modes (edit, help, view, custom) Window states (minimized, maximized, solo, normal)
Web Services for Remote Portlets Γιατί απομακρυσμένα portlets; Ευκολία ρύθμισης Ανεξαρτησία πλατφόρμας Κλιμάκωση (scalability)
Web Services for Remote Portlets WSRP Producer Web Service Παρέχει 1 ή περισσότερα Portlets Υλοποιεί WSRP interfaces/operations Μπορεί να παρέχει runtime (container) για deploying/management άνω του 1 portlet
Web Services for Remote Portlets WSRP Consumer Πελάτης Web Service Συνήθως ένα portal Καλεί WSRP web services ενός producer Παρέχει περιβάλλον αλληλεπίδρασης με portlets που παρέχουνοι Producers
Web Services for Remote Portlets Producers (.NET  WSRP) NetUnitySharePoint WSRP Producer Oracle WebCenter .NET Accelerator Consumers (WSRP  .NET) Microsoft WSRP Toolkit - SharePoint 2007 NetUnity WSRP Consumer for SharePoint NetUnity WSRP .NET Consumer
Παραπομπές (1) Σύγκριση C# και Java (Wikipedia) ,[object Object],Anders Hejlsberg (Wikipedia) ,[object Object],Java ISO pull-out (ECMA fast track to ISO) ,[object Object],Oracle vs Google Android (Dalvik VM) ,[object Object],[object Object],[object Object]
http://www.jnbridge.com/jnbpro.htmEZ JCom ,[object Object]
http://www.ezjcom.com/java.net.html,[object Object]
http://download.oracle.com/javase/1.4.2/docs/guide/beans/axbridge/developerguide/index.html
http://download.oracle.com/javase/1.4.2/docs/guide/beans/axbridge/developerguide/examples.htmlJava C# Bridge ,[object Object],Caffeine ,[object Object]
http://www.codeproject.com/KB/dotnet/Espresso.aspx
http://lsd.luminis.nl/java-net-interoperability/,[object Object]
http://sourceforge.net/apps/mediawiki/ikvm
http://ant-ikvmc.sourceforge.net
http://code.google.com/p/jar2ikvmc JDK, JavaFX SDK & NetBeans IDE ,[object Object]

Contenu connexe

Similaire à It pro dev_birbilis_20101127_el

e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017
e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017
e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017Haris Papadopoulos
 
Τεχνολογική επισκόπηση
Τεχνολογική επισκόπησηΤεχνολογική επισκόπηση
Τεχνολογική επισκόπησηStesia Papavasileiou
 
Θεμιστοκλής Παπαβασιλείου
Θεμιστοκλής ΠαπαβασιλείουΘεμιστοκλής Παπαβασιλείου
Θεμιστοκλής ΠαπαβασιλείουISSEL
 
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου ΙστούManolis Vavalis
 
Smart Building Automation using Heterogeneous Wireless Sensor Networks (in gr...
Smart Building Automation using Heterogeneous Wireless Sensor Networks (in gr...Smart Building Automation using Heterogeneous Wireless Sensor Networks (in gr...
Smart Building Automation using Heterogeneous Wireless Sensor Networks (in gr...Dimitrios Amaxilatis
 
Nashiproject
NashiprojectNashiproject
Nashiprojectzoifis
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
 
Open playground – Firmware and programming. Από τα block περιβάλλοντα (EV3-G,...
Open playground – Firmware and programming. Από τα block περιβάλλοντα (EV3-G,...Open playground – Firmware and programming. Από τα block περιβάλλοντα (EV3-G,...
Open playground – Firmware and programming. Από τα block περιβάλλοντα (EV3-G,...WROHellas
 
Thesis.Net - Training
Thesis.Net - TrainingThesis.Net - Training
Thesis.Net - TrainingAnna Tsolakou
 
Δούμας Οδυσσέας 7168
Δούμας Οδυσσέας 7168Δούμας Οδυσσέας 7168
Δούμας Οδυσσέας 7168ISSEL
 
Εισαγωγή στην Ασφάλεια Ιστοχώρων
Εισαγωγή στην Ασφάλεια ΙστοχώρωνΕισαγωγή στην Ασφάλεια Ιστοχώρων
Εισαγωγή στην Ασφάλεια ΙστοχώρωνAkeebaBackup.com
 
Thesis.Net Framework Training
Thesis.Net Framework TrainingThesis.Net Framework Training
Thesis.Net Framework Trainingpdalianis
 
Λυκάρτσης Ιωάννης
Λυκάρτσης ΙωάννηςΛυκάρτσης Ιωάννης
Λυκάρτσης ΙωάννηςISSEL
 
Development of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous IntegrationDevelopment of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous IntegrationISSEL
 
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούΑνάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούISSEL
 

Similaire à It pro dev_birbilis_20101127_el (20)

e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017
e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017
e-ΕΠΑΛ: Το έργο, η ομάδα, οι τεχνολογικές προκλήσεις - FOSSCOMM 2017
 
Τεχνολογική επισκόπηση
Τεχνολογική επισκόπησηΤεχνολογική επισκόπηση
Τεχνολογική επισκόπηση
 
Θεμιστοκλής Παπαβασιλείου
Θεμιστοκλής ΠαπαβασιλείουΘεμιστοκλής Παπαβασιλείου
Θεμιστοκλής Παπαβασιλείου
 
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
 
Smart Building Automation using Heterogeneous Wireless Sensor Networks (in gr...
Smart Building Automation using Heterogeneous Wireless Sensor Networks (in gr...Smart Building Automation using Heterogeneous Wireless Sensor Networks (in gr...
Smart Building Automation using Heterogeneous Wireless Sensor Networks (in gr...
 
Nashiproject
NashiprojectNashiproject
Nashiproject
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
 
Open playground – Firmware and programming. Από τα block περιβάλλοντα (EV3-G,...
Open playground – Firmware and programming. Από τα block περιβάλλοντα (EV3-G,...Open playground – Firmware and programming. Από τα block περιβάλλοντα (EV3-G,...
Open playground – Firmware and programming. Από τα block περιβάλλοντα (EV3-G,...
 
Thesis.Net - Training
Thesis.Net - TrainingThesis.Net - Training
Thesis.Net - Training
 
Thessaloniki rb-24
Thessaloniki rb-24Thessaloniki rb-24
Thessaloniki rb-24
 
Δούμας Οδυσσέας 7168
Δούμας Οδυσσέας 7168Δούμας Οδυσσέας 7168
Δούμας Οδυσσέας 7168
 
Εισαγωγή στην Ασφάλεια Ιστοχώρων
Εισαγωγή στην Ασφάλεια ΙστοχώρωνΕισαγωγή στην Ασφάλεια Ιστοχώρων
Εισαγωγή στην Ασφάλεια Ιστοχώρων
 
Thesis.Net Framework Training
Thesis.Net Framework TrainingThesis.Net Framework Training
Thesis.Net Framework Training
 
Εισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤΕισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤ
 
Beauty salon
Beauty salonBeauty salon
Beauty salon
 
grails framework
grails frameworkgrails framework
grails framework
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Λυκάρτσης Ιωάννης
Λυκάρτσης ΙωάννηςΛυκάρτσης Ιωάννης
Λυκάρτσης Ιωάννης
 
Development of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous IntegrationDevelopment of an automatic procedure for Continuous Integration
Development of an automatic procedure for Continuous Integration
 
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούΑνάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
 

Plus de George Birbilis

Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ ΚέρκυραςΠαρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ ΚέρκυραςGeorge Birbilis
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enGeorge Birbilis
 
EURON Poster - Robotics Group
EURON Poster - Robotics GroupEURON Poster - Robotics Group
EURON Poster - Robotics GroupGeorge Birbilis
 
Eκπαιδευτικό λογισμικό πολλαπλών αναπαραστάσεων
Eκπαιδευτικό λογισμικό πολλαπλών αναπαραστάσεωνEκπαιδευτικό λογισμικό πολλαπλών αναπαραστάσεων
Eκπαιδευτικό λογισμικό πολλαπλών αναπαραστάσεωνGeorge Birbilis
 
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρων
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρωνΟφιοειδής κίνηση με χρήση πολλαπλών πρακτόρων
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρωνGeorge Birbilis
 
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίων
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίωνΠολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίων
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίωνGeorge Birbilis
 
Multi-agent snake-like motion with reactive obstacle avoidance
Multi-agent snake-like motion with reactive obstacle avoidanceMulti-agent snake-like motion with reactive obstacle avoidance
Multi-agent snake-like motion with reactive obstacle avoidanceGeorge Birbilis
 
MULTI-AGENT MANIPULATOR CONTROL AND MOVING OBSTACLE AVOIDANCE
MULTI-AGENT MANIPULATOR CONTROL ANDMOVING OBSTACLE AVOIDANCEMULTI-AGENT MANIPULATOR CONTROL ANDMOVING OBSTACLE AVOIDANCE
MULTI-AGENT MANIPULATOR CONTROL AND MOVING OBSTACLE AVOIDANCEGeorge Birbilis
 

Plus de George Birbilis (8)

Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ ΚέρκυραςΠαρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_en
 
EURON Poster - Robotics Group
EURON Poster - Robotics GroupEURON Poster - Robotics Group
EURON Poster - Robotics Group
 
Eκπαιδευτικό λογισμικό πολλαπλών αναπαραστάσεων
Eκπαιδευτικό λογισμικό πολλαπλών αναπαραστάσεωνEκπαιδευτικό λογισμικό πολλαπλών αναπαραστάσεων
Eκπαιδευτικό λογισμικό πολλαπλών αναπαραστάσεων
 
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρων
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρωνΟφιοειδής κίνηση με χρήση πολλαπλών πρακτόρων
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρων
 
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίων
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίωνΠολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίων
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίων
 
Multi-agent snake-like motion with reactive obstacle avoidance
Multi-agent snake-like motion with reactive obstacle avoidanceMulti-agent snake-like motion with reactive obstacle avoidance
Multi-agent snake-like motion with reactive obstacle avoidance
 
MULTI-AGENT MANIPULATOR CONTROL AND MOVING OBSTACLE AVOIDANCE
MULTI-AGENT MANIPULATOR CONTROL ANDMOVING OBSTACLE AVOIDANCEMULTI-AGENT MANIPULATOR CONTROL ANDMOVING OBSTACLE AVOIDANCE
MULTI-AGENT MANIPULATOR CONTROL AND MOVING OBSTACLE AVOIDANCE
 

It pro dev_birbilis_20101127_el

  • 1. Life after Java (...η ζωή μετά) Reusing code and skills in a .NET world
  • 2. Θέματα Java- OOP γλώσσα vs πλατφόρμα Java vs C# Components & Controls vs JavaBeans PME (Property – Method – Event) model JUMP & J# Java – COM bridges IKVM.net Web Services WSRP : Web Services for Remote Portlets
  • 3. Java ως OOP γλώσσα Κληρονομικότητα, πολυμορφισμός, δυναμικό φόρτωμα κλάσεων, εξαιρέσεις... Μεγάλη συμπάθεια και αναγνωρισμένη πορεία στον ακαδημαϊκό χώρο Πληθώρα σχετικών βιβλιοθηκών και λογισμικού, κυρίως ανοιχτού κώδικα Αρκετοί νέοι προγραμματιστές μυημένοιστη γλώσσα Java στις σπουδές τους
  • 4. Java ως πλατφόρμα Java 1.x –command line, AWT και Applets Java 1.2, 1.3, … = Java 2 (JFC/Swing, …) JavaSE (= Standard Edition – Desktops) JavaEE (= Enterprise Edition – Servers) JavaME (= Micro Edition – Mobiles) (Re)focus  JavaFX (Java vs JavaScript)
  • 5. Το μέλλον της Java; Αλλαγή προτεραιοτήτων Sun Microsystems  Oracle JDeveloper vs NetBeans IDE Java Cloud, Java.net  Kenai Java.net Θέματα πνευματικών δικαιωμάτων Sun vs Microsoft (MSJVM) Oracle vs Google (Android Dalvik VM) Μη προτυποποίηση από καταξιωμένους διεθνείς οργανισμούς (ISO pull-out)
  • 6. Οικονομικές & εργασιακές συνθήκες: Ανταγωνιστικές Ευμετάβλητες  Κινητικότητα εργαζομένων Επαναχρησιμοποίηση: Κώδικα Δεξιοτήτων  Ευελιξία = πολύτιμος σύμμαχος
  • 7. Java vs C# Anders Hejlsberg αρχικός συγγραφέας της Turbo Pascal chief architect του Delphi J++, WFC (Windows Foundation Classes) lead architect της C# LINQ (Language Integrated Query) C# = Java + Object Pascal (Delphi) + VB ++
  • 8. Components Unstructured Data Record = Structured, Addressable (Name, Pos) Data Object = Record + Methods to manipulate its data Component = Object + PME + Resources (Packaging) Agent = Component + (Internal) Logic / Program Loop
  • 9. Controls / Widgets Control / Widget = User Interface Component JavaBeans: Components (non visible) Controls (συνήθως JFC/Swing /Model-ViewController [M-VC]) Enterprise JavaBeans αντίστοιχα με COM+ components (καμία σχέση με τυπικά JavaBeans) για J2EE
  • 10. PME (Property-Method-Event) Properties (get/set accessors, metadata) Methods (OOP) Events Java: αρχικά tightly-coupled (base classes / abstract methods), έπειτα callback interfaces VB: method signatures (WithEvents) Object Pascal / Delphi: method variables C#: delegates
  • 11. JUMP & J# (Microsoft) JUMP Import Java “projects” από Visual Studio Μετατροπή κώδικα Java σε C# J# Java compiler  IL code αντί Java bytecode Java datatype boxing Java 1.x class library, Swing & Collections API Μέχρι και το Visual Studio 2005
  • 12. Java – COM/.NET bridges (1) JACOB (OpenSource) COM Automation από Java μέσω JNI wrappers jacoZoom ActiveX Controls / Servers ([D]COM / Automation) J-Integra .COM DCOM wire protocol (ORPC) σε pure Java J-Integra .NET .NET Remoting wire protocol σε pure Java, Visual Studio & Eclipse plugins
  • 13. Java – COM/.NET bridges (2) COMConnect Java  COM/.NET – stateful TCP, low latency Jni4net (OpenSource) intra-process, object oriented, JNI implementation JNBridgePro Visual Studio & Eclipse plugins, shared memory, sockets, network binary protocol, HTTP/SOAP EZ JCom JavaCOM/.NET, drag-drop Swing components
  • 14. Java – COM/.NET bridges (3) Java Plug-in (JavaBeans Bridge for ActiveX) Sun/Oracle Java VM, Web Browser integration, JavaBeans ActiveX controls (typelibrary) Java C# Bridge (OpenSource) Serlializing/DeserlializingJava - C# αντικείμενα, χειρονακτική συγγραφή C# αντικειμένουή χρήση generic JavaObjectκαι δυναμικό query Caffeine (OpenSource) Hosting JVM σε .NET Runtime,JNI OOP wrapper R-JAX (pioneering, RMI/HTTP, obsolete)
  • 15. JNBridgePro – Call Java from .NET
  • 16. JNBridgePro – Call Java from .NET (1)
  • 17. JNBridgePro – Call Java from .NET (2) Start Proxy Generator
  • 18. JNBridgePro – Call Java from .NET (3) Edit Classpath
  • 19. JNBridgePro – Call Java from .NET (4) Class Path Entries
  • 20. JNBridgePro – Call Java from .NET (5) Load Classes
  • 21. JNBridgePro – Call Java from .NET (6) Load Classes Progress
  • 22. JNBridgePro – Call Java from .NET (7) Choose Proxies
  • 23. JNBridgePro – Call Java from .NET (8) Generate Proxies
  • 24. JNBridgePro – Call Java from .NET (9) Use the Proxies
  • 25. JNBridgePro – Call Java from .NET (10) Call Java Methods
  • 26. JNBridgePro – Call Java from .NET (11) Run the Program
  • 27. JNBridgePro – Call Java from .NET Visually generate proxies: allow .Netaccess Java classes Link .NET proxy assembly to .NET development project (Add Reference) Write .NET code to access Java classes(with IntelliSense) Edit configuration - specify communications mechanism (from in-process on same machine to cross-network) Run integrated .NET and Java code (managed lifecycles)
  • 28. JNBridgePro – Call .NET from Java
  • 29. JNBridgePro – Call .NET from Java (1)
  • 30. JNBridgePro – Call .NET from Java (2) Start Proxy Generator
  • 31. JNBridgePro – Call .NET from Java (3) Add Assembly
  • 32. JNBridgePro – Call .NET from Java (4) Assembly List Entries
  • 33. JNBridgePro – Call .NET from Java (5) Load Classes
  • 34. JNBridgePro – Call .NET from Java (6) Load Class Progress
  • 35. JNBridgePro – Call .NET from Java (7) Choose Proxies
  • 36. JNBridgePro – Call .NET from Java (8) Generate Proxies
  • 37. JNBridgePro – Call .NET from Java (9) Use the Proxies
  • 38. JNBridgePro – Call .NET from Java (10) Call .NET Objects
  • 39. JNBridgePro – Call .NET from Java (11) Run the Program
  • 40. JNBridgePro – Call .NET from Java Visually generate proxies: allow Java access .NET classes Reference Java proxy .JAR file from Java development project (place in build CLASSPATH) Write Java code to access .NET classes Edit configuration - specify communications mechanism (from in-process on same machine to cross-network) Run integrated .NET and Java code (managed lifecycles)
  • 41. JNBridgePro – Visual Studio plugin
  • 44. IKVM.net (Jeroen Frijters) Υλοποίηση Java Εικονικής Μηχανής (JVM): Microsoft .NET Framework Mono Συστατικά: Java Virtual Machine σε .NET Java class libraries σε .NET Εργαλεία διαλειτουργικότητας Java -.NET
  • 45. IKVM.net – σενάρια χρήσης Χρήση ωςτυπική Java Virtual Machine (JVM) Χρήση βιβλιοθηκών Java σε εφαρμογές .ΝΕΤ Ανάπτυξη εφαρμογών .NET σε γλώσσα Java
  • 46. IKVM.net – σενάρια χρήσης Χρήση ωςτυπική Java Virtual Machine (JVM) java -jar myapp.jar ikvm -jar myapp.jar
  • 47. IKVM.net – σενάρια χρήσης Χρήση βιβλιοθηκών Java σε εφαρμογές .ΝΕΤ ikvmc = Java bytecode  .NET IL ikvmc -target:library mylib.jar mylib.dll π.χ. Apache FOP = XSL-FO processor (XML  PDF)
  • 48. IKVM.net – σενάρια χρήσης Ανάπτυξη εφαρμογών .NET σε γλώσσα Java ikvmc = Java bytecode  .NET IL ikvmc -target:exe myapp.jar myapp.exe
  • 49. IKVM.net Κλήση .NET API από Java(IKVM.net JVM) ikvmstub = Java stubs από .NETAPI ikvmstub mscorlib.dll mscorlib.jar ikvmstub c:ibylib.dll
  • 50. IKVM.net – ενσωμάτωση / εργαλεία Mono (OpenSource .NET από Novell) MonoDevelop (IDE) Ant (task για ikvmc) Jar2ikvmc(φάκελος από εξαρτημένα JAR)
  • 51. IKVM.netintegration Ant task για ikvmc  <ikvmc target="exe" out="hello.exe" home="c:/ikvm-0.36.0.11" version="1.0.0.0“ debug="true“ main="net.sf.ant-ikvmc.Hello"> <fileset dir="${build}"> <include name="**/*.class"/> </fileset> <fileset dir="${lib}"> <include name="**/*.jar"/> </fileset> </ikvmc>
  • 52. IKVM.netintegration Jar2ikvmc(φάκελος από εξαρτημένα JAR) jar2ikvmc.exe JFreeChart JFreeChart2Net.cmd  ikvmc swtgraphics2d.jar -target:library ikvmc servlet.jar -target:library ikvmc junit.jar -target:library ikvmc jcommon-1.0.10.jar -target:library ikvmc gnujaxp.jar -target:library  ikvmc itext-2.0.2.jar -target:library -r:gnujaxp.dllikvmc jfreechart-1.0.6.jar -target:library -r:jcommon-1.0.10.dll ->-r:servlet.dll -r:gnujaxp.dll ...
  • 53. Web Services Restlet (Java web framework) Expose/Consume RESTful web APIs Java Web Services Stack (Metro) JAX-WS (Java API for XML Web Services) JAXB (Java Architecture for XML Binding) WSIT (Web Services Interoperability Technologies [aka Project Tango]) WSIT (Tango) αντιστοιχεί στο WCF (Indigo)
  • 54. Web Services for Remote Portlets Portlet = αλληλεπιδραστικό στοιχείο εφαρμογής, παράγει τμήματα markup, συγκεντρώσιμα και εμφανιζόμενα σε portals WSRP = αλληλεπιδραστικά web services εστιασμένα στην παρουσίαση. content & apps: discoverable & pluggable
  • 55. Web Services for Remote Portlets Γιατί WSRP αντί απλά Web Services; Localization Mime types Portlet modes (edit, help, view, custom) Window states (minimized, maximized, solo, normal)
  • 56. Web Services for Remote Portlets Γιατί απομακρυσμένα portlets; Ευκολία ρύθμισης Ανεξαρτησία πλατφόρμας Κλιμάκωση (scalability)
  • 57. Web Services for Remote Portlets WSRP Producer Web Service Παρέχει 1 ή περισσότερα Portlets Υλοποιεί WSRP interfaces/operations Μπορεί να παρέχει runtime (container) για deploying/management άνω του 1 portlet
  • 58. Web Services for Remote Portlets WSRP Consumer Πελάτης Web Service Συνήθως ένα portal Καλεί WSRP web services ενός producer Παρέχει περιβάλλον αλληλεπίδρασης με portlets που παρέχουνοι Producers
  • 59. Web Services for Remote Portlets Producers (.NET  WSRP) NetUnitySharePoint WSRP Producer Oracle WebCenter .NET Accelerator Consumers (WSRP  .NET) Microsoft WSRP Toolkit - SharePoint 2007 NetUnity WSRP Consumer for SharePoint NetUnity WSRP .NET Consumer
  • 60.
  • 61.
  • 62.
  • 64.
  • 66.
  • 69.
  • 70.
  • 73.
  • 79.
  • 81.