SlideShare une entreprise Scribd logo
1  sur  68
Life after Java Reusing code and skills in a .NET world
Agenda Java- OOP language vsplatform 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 as an OOPlanguage Inheritance, Polymorphism, Dynamic Class Loading, Exceptions... Great esteem and proved record at academia Multitude of related libraries and software, mainly OpenSource Lots of new programmers introduced to the Java language during their studies
Java as a platform Java 1.x –command line, AWT andApplets 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)
The future of Java? Change in priorities Sun Microsystems  Oracle JDeveloper vs NetBeans IDE Java Cloud, Java.net  Kenai Java.net Copyright issues Sun vs Microsoft (MSJVM) Oracle vs Google (Android Dalvik VM) No standardization by established international organisations (ISO pull-out)
Economics & work conditions: Competitive Fluctuating  Worker mobility Reuse: Code Skills Flexibility = invaluable ally
Java vs C# Anders Hejlsberg  original author ofTurbo Pascal chief architect of Delphi J++, WFC (Windows Foundation Classes) lead architect ofC# 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 (usually JFC/Swing /Model-ViewController [M-VC]) Enterprise JavaBeans “similar” toCOM+ components (not much related to typicalJavaBeans)for J2EE
PME (Property-Method-Event) Properties (get/set accessors, metadata) Methods (OOP) Events Java: initially tightly-coupled (base classes / abstract methods), later on callback interfaces VB: method signatures (WithEvents) Object Pascal / Delphi: method variables C#: delegates
JUMP & J# (Microsoft) JUMP Import Java “projects” from Visual Studio Convert Java code toC# J# Java compiler  IL code, not Java bytecode Java datatype boxing Java 1.x class library, Swing & Collections API Up until Visual Studio 2005
Java – COM/.NET bridges (1) JACOB (OpenSource) COM Automation from Java via JNI wrappers jacoZoom ActiveX Controls / Servers ([D]COM / Automation) J-Integra .COM DCOM wire protocol (ORPC) topure Java J-Integra .NET .NET Remoting wire protocolto 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# objects, manual authorC# object or use generic JavaObject and dynamic query Caffeine (OpenSource) Hosting JVM in .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) JavaVirtual Machine (JVM) implementation: Microsoft .NET Framework Mono Components: Java Virtual Machine in .NET Java class librariesin .NET Java-.NET interoperability tools
IKVM.net – usage scenarios Use as typical Java Virtual Machine (JVM) Use Java libraries in .ΝΕΤ applications Develop .NET applications in Java language
IKVM.net – usage scenarios Use as typicalJava Virtual Machine (JVM) Drop-in replacement: java -jar myapp.jar ikvm -jar myapp.jar
IKVM.net – usage scenarios Use Java libraries in.ΝΕΤ applications ikvmc  = Java bytecode  .NET IL ikvmc -target:library mylib.jar mylib.dll π.χ. Apache FOP  = XSL-FO  processor (XML  PDF)
IKVM.net – usage scenarios Develop .NET applicationsin Java language ikvmc  = Java bytecode  .NET IL ikvmc -target:exe myapp.jar myapp.exe
IKVM.net Call .NET API from Java(inIKVM.net JVM) ikvmstub = Java stubs from .NETAPI ikvmstub mscorlib.dll  mscorlib.jar ikvmstub c:ibylib.dll
IKVM.net – integration / tools Mono (OpenSource .NET by Novell) MonoDevelop (IDE) Ant (task for ikvmc) Jar2ikvmc(folder of dependentJARs)
IKVM.netintegration Ant task for 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(folder of dependentJARs) 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) corresponds to WCF (Indigo)
Web Services for Remote Portlets Portlet = interactive application component, produces markup segments, aggregated and presented inportals WSRP = interactive web servicesfocused to presentation content & apps: discoverable & pluggable
Web Services for Remote Portlets Why WSRPinstead of simple Web Services? Localization Mime types Portlet modes (edit, help, view, custom) Window states (minimized, maximized, solo, normal)
Web Services for Remote Portlets Why remoteportlets? Ease of configuration Platform independence Scalability
Web Services for Remote Portlets WSRP Producer Web Service Provides 1 or morePortlets Implements WSRP interfaces/operations Can provideruntime (container) fordeploying/management of>1 portlet
Web Services for Remote Portlets WSRP Consumer Web Service client Usually aportal Calls producer WSRP web services Provides environment to interact withportlets theProducers provide
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
References (1) C# andJava comparison (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

Contenu connexe

Tendances

Java compilation
Java compilationJava compilation
Java compilation
Mike Kucera
 
Great cup of java
Great  cup of javaGreat  cup of java
Great cup of java
CIB Egypt
 
212 kuliah 01 pengenalan pemrograman berorientasi objek (java)
212 kuliah 01   pengenalan pemrograman berorientasi objek (java)212 kuliah 01   pengenalan pemrograman berorientasi objek (java)
212 kuliah 01 pengenalan pemrograman berorientasi objek (java)
yuan99
 

Tendances (20)

JVM
JVMJVM
JVM
 
Java compilation
Java compilationJava compilation
Java compilation
 
Using Java from Ruby with JRuby IRB
Using Java from Ruby with JRuby IRBUsing Java from Ruby with JRuby IRB
Using Java from Ruby with JRuby IRB
 
.NET Vs J2EE
.NET Vs J2EE.NET Vs J2EE
.NET Vs J2EE
 
Java Basic PART I
Java Basic PART IJava Basic PART I
Java Basic PART I
 
Great cup of java
Great  cup of javaGreat  cup of java
Great cup of java
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)
 
Java Threads Tutorial | Multithreading In Java Tutorial | Java Tutorial For B...
Java Threads Tutorial | Multithreading In Java Tutorial | Java Tutorial For B...Java Threads Tutorial | Multithreading In Java Tutorial | Java Tutorial For B...
Java Threads Tutorial | Multithreading In Java Tutorial | Java Tutorial For B...
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
 
Introducing Java 7
Introducing Java 7Introducing Java 7
Introducing Java 7
 
Basic java part_ii
Basic java part_iiBasic java part_ii
Basic java part_ii
 
J2EE Struts with Hibernate Framework
J2EE Struts with Hibernate FrameworkJ2EE Struts with Hibernate Framework
J2EE Struts with Hibernate Framework
 
1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introduction
 
Java & J2EE Struts with Hibernate Framework
Java & J2EE Struts with Hibernate FrameworkJava & J2EE Struts with Hibernate Framework
Java & J2EE Struts with Hibernate Framework
 
212 kuliah 01 pengenalan pemrograman berorientasi objek (java)
212 kuliah 01   pengenalan pemrograman berorientasi objek (java)212 kuliah 01   pengenalan pemrograman berorientasi objek (java)
212 kuliah 01 pengenalan pemrograman berorientasi objek (java)
 
1- java
1- java1- java
1- java
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
 
What Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
What Is Java | Java Tutorial | Java Programming | Learn Java | EdurekaWhat Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
What Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
 
Object Oriented Programming-JAVA
Object Oriented Programming-JAVAObject Oriented Programming-JAVA
Object Oriented Programming-JAVA
 
Java ppts unit1
Java ppts unit1Java ppts unit1
Java ppts unit1
 

Similaire à It pro dev_birbilis_20101127_en

eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
Manuel - SPR - Intro to Java Language_2016
Manuel - SPR - Intro to Java Language_2016Manuel - SPR - Intro to Java Language_2016
Manuel - SPR - Intro to Java Language_2016
Manuel Fomitescu
 
Java-1st.pptx about Java technology before oops
Java-1st.pptx about Java technology before oopsJava-1st.pptx about Java technology before oops
Java-1st.pptx about Java technology before oops
buvanabala
 
1 introduction
1 introduction1 introduction
1 introduction
Mks Khalid
 
Core java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutionsCore java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutions
QUONTRASOLUTIONS
 

Similaire à It pro dev_birbilis_20101127_en (20)

basic_java.ppt
basic_java.pptbasic_java.ppt
basic_java.ppt
 
Understanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual MachineUnderstanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual Machine
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
java basics.pptx
java basics.pptxjava basics.pptx
java basics.pptx
 
Con-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistCon-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With Javassist
 
Javalecture 1
Javalecture 1Javalecture 1
Javalecture 1
 
Manuel - SPR - Intro to Java Language_2016
Manuel - SPR - Intro to Java Language_2016Manuel - SPR - Intro to Java Language_2016
Manuel - SPR - Intro to Java Language_2016
 
1.introduction to java
1.introduction to java1.introduction to java
1.introduction to java
 
Java-1st.pptx about Java technology before oops
Java-1st.pptx about Java technology before oopsJava-1st.pptx about Java technology before oops
Java-1st.pptx about Java technology before oops
 
Java/Servlet/JSP/JDBC
Java/Servlet/JSP/JDBCJava/Servlet/JSP/JDBC
Java/Servlet/JSP/JDBC
 
Advance java prasentation
Advance java prasentationAdvance java prasentation
Advance java prasentation
 
javacourse in c.pdf
javacourse in c.pdfjavacourse in c.pdf
javacourse in c.pdf
 
javacourse in c.pdf
javacourse in c.pdfjavacourse in c.pdf
javacourse in c.pdf
 
Java Technology Define In Short Time
Java Technology Define In  Short TimeJava Technology Define In  Short Time
Java Technology Define In Short Time
 
1 introduction
1 introduction1 introduction
1 introduction
 
Core java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutionsCore java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutions
 
Clojure Fundamentals Course For Beginners
Clojure Fundamentals Course For Beginners Clojure Fundamentals Course For Beginners
Clojure Fundamentals Course For Beginners
 
Tech Days 2010
Tech  Days 2010Tech  Days 2010
Tech Days 2010
 
What is Java? Presentation On Introduction To Core Java By PSK Technologies
What is Java? Presentation On Introduction To Core Java By PSK TechnologiesWhat is Java? Presentation On Introduction To Core Java By PSK Technologies
What is Java? Presentation On Introduction To Core Java By PSK Technologies
 
J2 Ee Overview
J2 Ee OverviewJ2 Ee Overview
J2 Ee Overview
 

Plus de George Birbilis

Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ ΚέρκυραςΠαρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
George Birbilis
 
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρων
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρωνΟφιοειδής κίνηση με χρήση πολλαπλών πρακτόρων
Οφιοειδής κίνηση με χρήση πολλαπλών πρακτόρων
George Birbilis
 
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίων
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίωνΠολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίων
Πολυπρακτορική οφιοειδής κίνηση με αντιδραστική αποφυγή εμποδίων
George Birbilis
 

Plus de George Birbilis (8)

Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ ΚέρκυραςΠαρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
Παρουσίαση Scratch - 9 Οκτ 2012 - ΚΕΠΛΗΝΕΤ Κέρκυρας
 
It pro dev_birbilis_20101127_el
It pro dev_birbilis_20101127_elIt pro dev_birbilis_20101127_el
It pro dev_birbilis_20101127_el
 
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
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

It pro dev_birbilis_20101127_en

  • 1. Life after Java Reusing code and skills in a .NET world
  • 2. Agenda Java- OOP language vsplatform 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 as an OOPlanguage Inheritance, Polymorphism, Dynamic Class Loading, Exceptions... Great esteem and proved record at academia Multitude of related libraries and software, mainly OpenSource Lots of new programmers introduced to the Java language during their studies
  • 4. Java as a platform Java 1.x –command line, AWT andApplets 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. The future of Java? Change in priorities Sun Microsystems  Oracle JDeveloper vs NetBeans IDE Java Cloud, Java.net  Kenai Java.net Copyright issues Sun vs Microsoft (MSJVM) Oracle vs Google (Android Dalvik VM) No standardization by established international organisations (ISO pull-out)
  • 6. Economics & work conditions: Competitive Fluctuating  Worker mobility Reuse: Code Skills Flexibility = invaluable ally
  • 7. Java vs C# Anders Hejlsberg original author ofTurbo Pascal chief architect of Delphi J++, WFC (Windows Foundation Classes) lead architect ofC# 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 (usually JFC/Swing /Model-ViewController [M-VC]) Enterprise JavaBeans “similar” toCOM+ components (not much related to typicalJavaBeans)for J2EE
  • 10. PME (Property-Method-Event) Properties (get/set accessors, metadata) Methods (OOP) Events Java: initially tightly-coupled (base classes / abstract methods), later on callback interfaces VB: method signatures (WithEvents) Object Pascal / Delphi: method variables C#: delegates
  • 11. JUMP & J# (Microsoft) JUMP Import Java “projects” from Visual Studio Convert Java code toC# J# Java compiler  IL code, not Java bytecode Java datatype boxing Java 1.x class library, Swing & Collections API Up until Visual Studio 2005
  • 12. Java – COM/.NET bridges (1) JACOB (OpenSource) COM Automation from Java via JNI wrappers jacoZoom ActiveX Controls / Servers ([D]COM / Automation) J-Integra .COM DCOM wire protocol (ORPC) topure Java J-Integra .NET .NET Remoting wire protocolto 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# objects, manual authorC# object or use generic JavaObject and dynamic query Caffeine (OpenSource) Hosting JVM in .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) JavaVirtual Machine (JVM) implementation: Microsoft .NET Framework Mono Components: Java Virtual Machine in .NET Java class librariesin .NET Java-.NET interoperability tools
  • 45. IKVM.net – usage scenarios Use as typical Java Virtual Machine (JVM) Use Java libraries in .ΝΕΤ applications Develop .NET applications in Java language
  • 46. IKVM.net – usage scenarios Use as typicalJava Virtual Machine (JVM) Drop-in replacement: java -jar myapp.jar ikvm -jar myapp.jar
  • 47. IKVM.net – usage scenarios Use Java libraries in.ΝΕΤ applications ikvmc = Java bytecode  .NET IL ikvmc -target:library mylib.jar mylib.dll π.χ. Apache FOP = XSL-FO processor (XML  PDF)
  • 48. IKVM.net – usage scenarios Develop .NET applicationsin Java language ikvmc = Java bytecode  .NET IL ikvmc -target:exe myapp.jar myapp.exe
  • 49. IKVM.net Call .NET API from Java(inIKVM.net JVM) ikvmstub = Java stubs from .NETAPI ikvmstub mscorlib.dll mscorlib.jar ikvmstub c:ibylib.dll
  • 50. IKVM.net – integration / tools Mono (OpenSource .NET by Novell) MonoDevelop (IDE) Ant (task for ikvmc) Jar2ikvmc(folder of dependentJARs)
  • 51. IKVM.netintegration Ant task for 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(folder of dependentJARs) 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) corresponds to WCF (Indigo)
  • 54. Web Services for Remote Portlets Portlet = interactive application component, produces markup segments, aggregated and presented inportals WSRP = interactive web servicesfocused to presentation content & apps: discoverable & pluggable
  • 55. Web Services for Remote Portlets Why WSRPinstead of simple Web Services? Localization Mime types Portlet modes (edit, help, view, custom) Window states (minimized, maximized, solo, normal)
  • 56. Web Services for Remote Portlets Why remoteportlets? Ease of configuration Platform independence Scalability
  • 57. Web Services for Remote Portlets WSRP Producer Web Service Provides 1 or morePortlets Implements WSRP interfaces/operations Can provideruntime (container) fordeploying/management of>1 portlet
  • 58. Web Services for Remote Portlets WSRP Consumer Web Service client Usually aportal Calls producer WSRP web services Provides environment to interact withportlets theProducers provide
  • 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.