it pro dev_birbilis_20101127_el
DESCRIPTION
Java ...η ζωή μετά - Επαναχρησιμοποίηση Κώδικα και Δεξιοτήτων στον κόσμο του .NET / παρουσίαση στο ITProDevConnections 2010 - http://www.itprodevconnections.grTRANSCRIPT
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
• JACOB (OpenSource)COM Automation από Java μέσω JNI wrappers
• jacoZoomActiveX Controls / Servers ([D]COM / Automation)
• J-Integra .COMDCOM wire protocol (ORPC) σε pure Java
• J-Integra .NET.NET Remoting wire protocol σε pure Java, Visual Studio & Eclipse plugins
Java – COM/.NET bridges (1)
• COMConnectJava COM/.NET – stateful TCP, low latency
• Jni4net (OpenSource)intra-process, object oriented, JNI implementation
• JNBridgeProVisual Studio & Eclipse plugins, shared memory, sockets, network binary protocol, HTTP/SOAP• EZ JComJavaCOM/.NET, drag-drop Swing components
Java – COM/.NET bridges (2)
• Java Plug-in (JavaBeans Bridge for ActiveX)
Sun/Oracle Java VM, Web Browser integration, JavaBeans ActiveX controls (typelibrary)
• Java C# Bridge (OpenSource)Serlializing/Deserlializing Java - C# αντικείμενα, χειρονακτική συγγραφή C# αντικειμένου ή χρήση generic JavaObject και δυναμικό query• Caffeine (OpenSource)Hosting JVM σε .NET Runtime, JNI OOP wrapper• R-JAX (pioneering, RMI/HTTP,
obsolete)
Java – COM/.NET bridges (3)
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
1. Visually generate proxies: allow .Net access Java classes
2. Link .NET proxy assembly to .NET development project (Add Reference)
3. Write .NET code to access Java classes (with IntelliSense)
4. Edit configuration - specify communications mechanism (from in-process on same machine to cross-network)
5. 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
1. Visually generate proxies: allow Java access .NET classes
2. Reference Java proxy .JAR file from Java development project (place in build CLASSPATH)
3. Write Java code to access .NET classes
4. Edit configuration - specify communications mechanism (from in-process on same machine to cross-network)
5. 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 από .NET
API
ikvmstub mscorlib.dll
mscorlib.jar
ikvmstub c:\lib\mylib.dll
IKVM.net – ενσωμάτωση / εργαλεία
• Mono (OpenSource .NET από Novell)
• MonoDevelop (IDE)
• Ant (task για ikvmc)
• Jar2ikvmc (φάκελος από εξαρτημένα JAR)
IKVM.net integrationAnt 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.net integrationJar2ikvmc (φάκελος από εξαρτημένα 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...
• 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
• 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)
–NetUnity SharePoint WSRP
Producer
–Oracle WebCenter .NET Accelerator
• Consumers (WSRP .NET)
–Microsoft WSRP Toolkit - SharePoint
2007
–NetUnity WSRP Consumer for
SharePoint
–NetUnity WSRP .NET Consumer
Web Services for Remote Portlets
• Σύγκριση C# και Java (Wikipedia)
o http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java
• Anders Hejlsberg (Wikipedia)o http://en.wikipedia.org/wiki/Anders_Heljsberg
• Java ISO pull-out (ECMA fast track to ISO)
o http://www.crn.com/news/channel-programs/18806978/sun-drops-iso-java-standards-effort-for-good.htm
• Oracle vs Google Android (Dalvik VM)
o http://www.businessweek.com/news/2010-08-13/oracle-says-google-android-violates-its-java-patents.html
Παραπομπές (1)
• Java Native Interface (JNI)o http://
download.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html
• JACOBo http://sourceforge.net/projects/jacob-project
• jacoZoomo http://www.infozoom.de/en_jacoZoom.shtml
• J-Integrao http://j-integra.intrinsyc.com
Παραπομπές (2)
• COMConnecto http://sourceforge.net/projects/comconnect
• jni4neto http://jni4net.sourceforge.net
• JNBridgeProo http://www.jnbridge.como http://www.jnbridge.com/jnbpro.htm
• EZ JComo http://www.ezjcom.como http://www.ezjcom.com/java.net.html
Παραπομπές (3)
• Java Plug-in (JavaBeans Bridge for ActiveX)
o http://www.oracle.com/technetwork/java/index-jsp-141438.html
o http://download.oracle.com/javase/1.4.2/docs/guide/beans/axbridge/developerguide/index.html
o http://download.oracle.com/javase/1.4.2/docs/guide/beans/axbridge/developerguide/examples.html
• Java C# Bridgeo http://java-cs-bridge.sourceforge.net
• Caffeineo http://caffeine.berlios.de/siteo http://
www.codeproject.com/KB/dotnet/Espresso.aspxo http://lsd.luminis.nl/java-net-interoperability/
Παραπομπές (4)
• IKVM.neto http://www.ikvm.neto http://sourceforge.net/apps/mediawiki/ikvmo http://ant-ikvmc.sourceforge.neto http://code.google.com/p/jar2ikvmc
• JDK, JavaFX SDK & NetBeans IDEo http://
www.oracle.com/technetwork/java/index.html
o http://www.java.com (Java Runtime)
Παραπομπές (5)
• .NET Framework & Visual Studio IDE
o http://www.microsoft.com/neto http://msdn.microsoft.com/en-us/vstudio/default.asp
xo http://www.microsoft.com/expresso http://
msdn.microsoft.com/en-us/library/ff649514.aspx
• Mono & MonoDevelop IDE• http://www.mono-project.com• http://monodevelop.com
• Eclipse Platform & IDEo http://www.eclipse.org
Παραπομπές (6)
• Restlet (RESTful web framework for Java)
o http://www.restlet.org
• Java Web Services Stack (Metro)• http://
www.oracle.com/technetwork/java/index-jsp-137004.html
• http://jax-ws.java.net (JAX-WS / JSR 224)• https://jaxb.dev.java.net (JAXB / JSR 222)• http://wsit.java.net (WSIT)• http://policy.dev.java.net (WS-Policy)• http://xwss.dev.java.net (WS-Security)• http://
netbeans.org/images_www/articles/interviews/wsit-netbeans-plugin.html
• Java Portlet Specificationo http://en.wikipedia.org/wiki/JSR_168 /
Παραπομπές (7)
• WSRP (Web Services for Remote Portlets)
o http://en.wikipedia.org/wiki/Web_Services_for_Remote_Portlets
o http://www.ibm.com/developerworks/webservices/library/ws-wsrp
o https://wsrp.dev.java.neto http://
www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp
o http://www.oasis-open.org/committees/download.php/3343/oasis-200304-wsrp-specification-1.0.pdf
o http://www.oasis-open.org/committees/download.php/21178/wsrp-primer-1.0.html
o http://www.oasis-open.org/committees/download.php/11774/wsrp-faq-draft-0.30.html
Παραπομπές (8)
• WSRP Toolkit for SharePoint 2007
• http://code.msdn.microsoft.com/WSRPToolkit
• NetUnity SharePoint & .NET WSRP Consumers
o http://www.netunitysoftware.com/Home.aspx
o Oracle WebCenter .NET Accelerator
o http://blogs.oracle.com/fusionecm/2010/05/webcenter_net_accelerator_-_mi.html
Παραπομπές (9)
Αξιολόγηση παρουσιάσεων
Πείτε μας την γνώμη σας και μπείτε στην κλήρωση για τα δώρα μας.Συμπληρώστε το έντυπο αξιολόγησης και παραδώστε το στην γραμματεία.