It pro dev_birbilis_20101127_el

69
Life after Java (...η ζωή μετά) Reusing code and skills in a .NET world

description

Java ...η ζωή μετά - Επαναχρησιμοποίηση Κώδικα και Δεξιοτήτων στον κόσμο του .NET / παρουσίαση στο ITProDevConnections 2010 - http://www.itprodevconnections.gr

Transcript of It pro dev_birbilis_20101127_el

Page 1: It pro dev_birbilis_20101127_el

Life after Java (...η ζωή μετά)

Reusing code and skills in a .NET world

Page 2: It pro dev_birbilis_20101127_el

Θέματα• 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

Page 3: It pro dev_birbilis_20101127_el

Java ως OOP γλώσσα

• Κληρονομικότητα, πολυμορφισμός, δυναμικό φόρτωμα κλάσεων, εξαιρέσεις...

• Μεγάλη συμπάθεια και αναγνωρισμένη πορεία στον ακαδημαϊκό χώρο

• Πληθώρα σχετικών βιβλιοθηκών και λογισμικού, κυρίως ανοιχτού κώδικα

• Αρκετοί νέοι προγραμματιστές μυημένοι στη γλώσσα Java στις σπουδές τους

Page 4: It pro dev_birbilis_20101127_el

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)

Page 5: It pro dev_birbilis_20101127_el

Το μέλλον της 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)

Page 6: It pro dev_birbilis_20101127_el

Οικονομικές & εργασιακές συνθήκες:• Ανταγωνιστικές • Ευμετάβλητες Κινητικότητα εργαζομένων

Επαναχρησιμοποίηση:• Κώδικα • Δεξιοτήτων Ευελιξία = πολύτιμος σύμμαχος

Page 7: It pro dev_birbilis_20101127_el

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 ++

Page 8: It pro dev_birbilis_20101127_el

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

Page 9: It pro dev_birbilis_20101127_el

Controls / Widgets

Control / Widget = User Interface Component

JavaBeans:• Components (non visible)• Controls (συνήθως JFC/Swing /

Model-ViewController [M-VC])• Enterprise JavaBeans αντίστοιχα

με COM+ components (καμία σχέση με τυπικά JavaBeans) για J2EE

Page 10: It pro dev_birbilis_20101127_el

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

Page 11: It pro dev_birbilis_20101127_el

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

Page 12: It pro dev_birbilis_20101127_el

• 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)

Page 13: It pro dev_birbilis_20101127_el

• 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)

Page 14: It pro dev_birbilis_20101127_el

• 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)

Page 15: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET

Page 16: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (1)

Page 17: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (2)Start Proxy Generator

Page 18: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (3)Edit Classpath

Page 19: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (4)Class Path Entries

Page 20: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (5)Load Classes

Page 21: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (6)Load Classes Progress

Page 22: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (7)Choose Proxies

Page 23: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (8)Generate Proxies

Page 24: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (9)Use the Proxies

Page 25: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (10)Call Java Methods

Page 26: It pro dev_birbilis_20101127_el

JNBridgePro – Call Java from .NET (11)Run the Program

Page 27: It pro dev_birbilis_20101127_el

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)

Page 28: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java

Page 29: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (1)

Page 30: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (2)Start Proxy Generator

Page 31: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (3)Add Assembly

Page 32: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (4)Assembly List Entries

Page 33: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (5)Load Classes

Page 34: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (6)Load Class Progress

Page 35: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (7)Choose Proxies

Page 36: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (8)Generate Proxies

Page 37: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (9)

Use the Proxies

Page 38: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (10)Call .NET Objects

Page 39: It pro dev_birbilis_20101127_el

JNBridgePro – Call .NET from Java (11)Run the Program

Page 40: It pro dev_birbilis_20101127_el

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)

Page 41: It pro dev_birbilis_20101127_el

JNBridgePro – Visual Studio plugin

Page 42: It pro dev_birbilis_20101127_el

JNBridgePro – Eclipse plugin

Page 43: It pro dev_birbilis_20101127_el

JNBridgePro – Communications

Page 44: It pro dev_birbilis_20101127_el

IKVM.net (Jeroen Frijters)

Υλοποίηση Java Εικονικής Μηχανής (JVM):• Microsoft .NET Framework• Mono

Συστατικά:• Java Virtual Machine σε .NET• Java class libraries σε .NET• Εργαλεία διαλειτουργικότητας

Java - .NET

Page 45: It pro dev_birbilis_20101127_el

IKVM.net – σενάρια χρήσης

• Χρήση ως τυπική Java Virtual Machine (JVM)

• Χρήση βιβλιοθηκών Java σε εφαρμογές .ΝΕΤ

• Ανάπτυξη εφαρμογών .NET σε γλώσσα Java

Page 46: It pro dev_birbilis_20101127_el

IKVM.net – σενάρια χρήσης

Χρήση ως τυπική Java Virtual Machine (JVM)

java -jar myapp.jar

ikvm -jar myapp.jar

Page 47: It pro dev_birbilis_20101127_el

IKVM.net – σενάρια χρήσης

Χρήση βιβλιοθηκών Java σε εφαρμογές .ΝΕΤ

ikvmc = Java bytecode .NET IL

ikvmc -target:library mylib.jar

mylib.dll

π.χ. Apache FOP = XSL-FO processor (XML PDF)

Page 48: It pro dev_birbilis_20101127_el

IKVM.net – σενάρια χρήσης

Ανάπτυξη εφαρμογών .NET σε γλώσσα Java

ikvmc = Java bytecode .NET IL

ikvmc -target:exe myapp.jar

myapp.exe

Page 49: It pro dev_birbilis_20101127_el

IKVM.net

Κλήση .NET API από Java (IKVM.net JVM)

ikvmstub = Java stubs από .NET

API

ikvmstub mscorlib.dll

mscorlib.jar

ikvmstub c:\lib\mylib.dll

Page 50: It pro dev_birbilis_20101127_el

IKVM.net – ενσωμάτωση / εργαλεία

• Mono (OpenSource .NET από Novell)

• MonoDevelop (IDE)

• Ant (task για ikvmc)

• Jar2ikvmc (φάκελος από εξαρτημένα JAR)

Page 51: It pro dev_birbilis_20101127_el

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>

Page 52: It pro dev_birbilis_20101127_el

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...

Page 53: It pro dev_birbilis_20101127_el

• 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

Page 54: It pro dev_birbilis_20101127_el

• Portlet = αλληλεπιδραστικό στοιχείο εφαρμογής, παράγει τμήματα markup, συγκεντρώσιμα και εμφανιζόμενα σε portals

• WSRP = αλληλεπιδραστικά web services εστιασμένα στην παρουσίαση.

content & apps: discoverable & pluggable

Web Services for Remote Portlets

Page 55: It pro dev_birbilis_20101127_el

Γιατί WSRP αντί απλά Web Services;

• Localization

• Mime types

• Portlet modes (edit, help, view,

custom)

• Window states (minimized,

maximized, solo, normal)

Web Services for Remote Portlets

Page 56: It pro dev_birbilis_20101127_el

Γιατί απομακρυσμένα portlets;

• Ευκολία ρύθμισης

• Ανεξαρτησία πλατφόρμας

• Κλιμάκωση (scalability)

Web Services for Remote Portlets

Page 57: It pro dev_birbilis_20101127_el

WSRP Producer

• Web Service

• Παρέχει 1 ή περισσότερα

Portlets

• Υλοποιεί WSRP

interfaces/operations

• Μπορεί να παρέχει runtime

(container) για

deploying/management άνω του

1 portlet

Web Services for Remote Portlets

Page 58: It pro dev_birbilis_20101127_el

WSRP Consumer

• Πελάτης Web Service

• Συνήθως ένα portal

• Καλεί WSRP web services ενός

producer

• Παρέχει περιβάλλον

αλληλεπίδρασης με portlets που

παρέχουν οι Producers

Web Services for Remote Portlets

Page 59: It pro dev_birbilis_20101127_el

• 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

Page 61: It pro dev_birbilis_20101127_el

• 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)

Page 62: It pro dev_birbilis_20101127_el

• 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)

Page 63: It pro dev_birbilis_20101127_el

• 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)

Page 65: It pro dev_birbilis_20101127_el

• .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)

Page 66: It pro dev_birbilis_20101127_el

• 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)

Page 67: It pro dev_birbilis_20101127_el

• 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)

Page 68: It pro dev_birbilis_20101127_el

• 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)

Page 69: It pro dev_birbilis_20101127_el

Αξιολόγηση παρουσιάσεων

Πείτε μας την γνώμη σας και μπείτε στην κλήρωση για τα δώρα μας.Συμπληρώστε το έντυπο αξιολόγησης και παραδώστε το στην γραμματεία.