Your SlideShare is downloading. ×
0
Alessandro de Oliveira Binhara
Projeto MONO BRASIL
binhara@monobrasil.org
Interoperabilidade
Java e .NET
2
Agenda
Sun (Oracle) X Microsoft
A Plataforma Java A Plataforma Mono
O Projeto Mono
Histórico, Motivações, Rodmap, Featur...
3
Sun X Microsoft
Sun (Oracle)
Uma Linguagem
Padrão, Manutenção, Comunicação
Foco na Empresa
Microsoft
Muitas Linguagens
F...
Plataforma JAVA
5
Plataforma Java
Linha do Tempo
Green Oak (1991)
*7 (1992)
Internet!!!!
HotJava (1995)
Netscape 2.0 Java enabled (1996)
P...
6
Mire no elefante e acerte na mosca!
7
Padrões X Implementações
Padrões
Especificação da linguagem Java - java.sun.com/docs/books/jls
Especificação da JVM - ja...
Plataforma .NET
9
Plataforma .NET nasce em 2001
Microsoft Lança a plataroma .Net
Coloca o C# como um padrão
O Core do .Net é colocado como...
10
O Padrão é ECMA/ISO
As especificações do Framework .Net
padronizadas pelo ECMA abordam o compilador
e a runtime
O compi...
11
Interoperabilidade entre Linguagens
12
Linguagens Disponíveis
Ada for .NET – A# (http://www.usafa.af.mil/df/dfcs/bios/mcc_html/a_sharp.cfm)
VisualBasic.NET – ...
13
Linguagens Disponíveis
Python
IronPython - http://www.ironpython.com/
Python for .NET compiler - http://starship.python...
14
Common Language Runtime CLR
Motivos:
Diminuir a combinação Linguagens x CPUs
Operações simplificadas e unificadas entre...
Plataforma Mono
16
Motivações
Projeto MONO
17
Plataforma Mono
Muitas Linguagem e Muitas Plataformas
Aproveita todas as características do mundo
OpenSource
Grande ace...
18
Microsoft lança o .NET
Projeto MONO
Miguel busca uma nova plataforma
para melhorar seus projetos.
Microsoft Lança a pla...
19
O que é ?
Projeto MONO
Mono é uma implementação OpenSource do
.NET Permite a execução e desenvolvimento de
software .Ne...
20
Multi-Linguagem e Multi-plataforma
21
O que é ?
Projeto MONO
22
Contribuições Microsoft
MS-PL or Apache Licensed Libraries
Ajax.NET, ASP.NET MVC1, MVC2,
Silverligth ToolKit, Silverlig...
23
Suporte C# 3.0 e 4.0
mcs: compilador para rutime 1.1.
gmcs: compilador para runtime the 2.0 runtime.
smcs: compiledor p...
IKVM
Interoperabilidade JAVA e
.NET
25
O que é O IKVM?
O IKVM é uma VM JAVA escrita em C# que
possibilita executar byte code Java no Mono
além de um conjunto ...
26
Java Virtual Machine
27
JAVA na IKVM
28
JAVA na IKVM
29
Instalação da IKVM
apt-get install IKVM
SUSE use o YAST
No redhat tem pacotes prontos
30
Como posso usar o IKVM?
Rodando uma Classe Java (dinamicamente)
Complilando um ByteCode para CLI (.jar->.dll)
Compiland...
31
Rodando uma aplicação java no Mono
-> javac *.java
-> jar cfm hello.jar manifest.mf Hello.class
-> ikvmc -reference:/us...
32
Usando uma Classe Java dentro do C#
(jar -> dll)
-> mcs -reference:IKVM.GNU.ClassPath hodgepodg.cs
-> mono hodgepodge.e...
33
Usando as bibliotecas do Mono dentro do
Java (dll -> jar)
PASSOS:
1) Gerar os stubs de .NET para Java, isto irá resulta...
34
CreateFile.java
Biblioteca Mono
35
ShowFile.java
Biblioteca Mono
36
Estendendo uma classe Java em C#
1) Criar a classe Java : “Subject.java”
2) Extender essa classe dentro do C#: “Exntesi...
37
Herança!!!!! Subject.java
38
Herança !! Extencion.cs
39
Mono Movies Flash
Aplicação Multi-linguagem
Criar classe MyClass.java (desenha um gráfico na tela)
A classe java usa as...
40
Exemplo
41
Figure.java
42
Ellipse.boo
import system
class Ellipse (Figure)
protected w
protected h
def construct (x,y,rw,rh)
super(x,y)
w = rw
h ...
43
Circle.cs
Herança
Chamada a super
Classe
44
CASE Kidux
Sistema para controle parental em uma distribuição linux para
crianças
Softwares em suma maioria escritos em...
45
Case Projeto Rhodes
Projeto Militar
Requisitos:
Desenvolvimento Rápido
Prototipagem rápida
Baixo consumo de Banda
Vária...
46
CASE Jsenna
47
CASE : Arquitetura Jsenna
Regras de Negócio em XML
Framework Jsenna
Abstração servidor de aplicação
Implementação
Em As...
48
Alessandro de Oliveira Binhara
Projeto MONO BRASIL
binhara@monobrasil.org
O Projeto Mono: Aplicações
.NET para sistemas nã...
Upcoming SlideShare
Loading in...5
×

Interop itcare: Interoperabilidade Java e .NET

204

Published on

Esta palestras visa apresentar como é possível realizar interoperabilidade entre Java e .NET usando mono e ikvm. Apresentação de exemplo práticos de como usar um código java dentro de C# ou mesmo estender as funcionalidades do java no C#

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
204
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Interop itcare: Interoperabilidade Java e .NET"

  1. 1. Alessandro de Oliveira Binhara Projeto MONO BRASIL binhara@monobrasil.org Interoperabilidade Java e .NET
  2. 2. 2 Agenda Sun (Oracle) X Microsoft A Plataforma Java A Plataforma Mono O Projeto Mono Histórico, Motivações, Rodmap, Features,, Interoperabilidade de Aplicativos .Net e Java IKVM Exemplo Prático Cases
  3. 3. 3 Sun X Microsoft Sun (Oracle) Uma Linguagem Padrão, Manutenção, Comunicação Foco na Empresa Microsoft Muitas Linguagens Facilidade, Aprendizado, Preferência Foco no Desenvolvedor
  4. 4. Plataforma JAVA
  5. 5. 5 Plataforma Java Linha do Tempo Green Oak (1991) *7 (1992) Internet!!!! HotJava (1995) Netscape 2.0 Java enabled (1996) Primeiro Release Java 1.02 (1996)
  6. 6. 6 Mire no elefante e acerte na mosca!
  7. 7. 7 Padrões X Implementações Padrões Especificação da linguagem Java - java.sun.com/docs/books/jls Especificação da JVM - java.sun.com/docs/books/vmspec Especificações da plataforma J2EE - java.sun.com/j2ee Implementações www.java.sun.com- implementação dos padrões Java www.ibm.com - implementação dos padrões Java www.gnu.org/software/classpath - implementação livre do JavaCore www.ikvm.net/ - implementação da JVM e suas classes em .NET e também ferramentas que permitem interoperabilidade entre Java e .NET
  8. 8. Plataforma .NET
  9. 9. 9 Plataforma .NET nasce em 2001 Microsoft Lança a plataroma .Net Coloca o C# como um padrão O Core do .Net é colocado como padrão Plataforma Microsoft .Net Mult-linguagem Coletor de Lixo C# tem mais recursos que o java
  10. 10. 10 O Padrão é ECMA/ISO As especificações do Framework .Net padronizadas pelo ECMA abordam o compilador e a runtime O compilador C# é o ECMA 334 O CLI (Common Language Infrastructure) é o ECMA 335 Permite que as aplicações rodem independentes de plataforma de hardware e de software básico
  11. 11. 11 Interoperabilidade entre Linguagens
  12. 12. 12 Linguagens Disponíveis Ada for .NET – A# (http://www.usafa.af.mil/df/dfcs/bios/mcc_html/a_sharp.cfm) VisualBasic.NET – mbas e bmcs (http://www.mono-project.com) ANSI C CSCC - http://www.gnu.org/projects/dotgnu/pnet.html ICC - http://www.cs.princeton.edu/software/lcc/ C# - mcs (mono-project) e cscc (DotGNU) Eiffel - Eiffel ENViSioN! (Eiffel Software) Fortran - Lahey/Fujitsu Fortran for .NET (Lahey Computer Systems, Inc.) Cobol NetCOBOL - COBOL for .NET (Fujitsu -) Net Express (Micro Focus) KICKS for .NET™ (Intensity Software) Hasquel - Hugs98 for .NET http://galois.com/~sof/hugs98.net/ Lisp RDNZL - http://www.weitz.de/rdnzl/ Foil - http://foil.sourceforge.net/ L Sharp .NET - http://www.lsharp.org/
  13. 13. 13 Linguagens Disponíveis Python IronPython - http://www.ironpython.com/ Python for .NET compiler - http://starship.python.net/crew/mhammond/dotnet/ Python for .NET - http://www.zope.org/Members/Brian/PythonNet/index_html Boo Liguagem Boo - http://boo.codehaus.org/ Ruby Ruby/.NET - http://www.saltypickle.com/rubydotnet/ NETRuby - http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/nrb.html Smalltalk SmallScripts - http://www.smallscript.org/ #Smalltalk LSWVST.Net - http://www.lesser-software.com/en/content/products/lswvst/lswvst-net.htm Prolog P # - http://www.dcs.ed.ac.uk/home/jjc/psharp/psharp-1.1.3/dlpsharp.html TCL/TK Mailframe - http://www.mailframe.net/Products/TCL/ TickleSharp - http://forge.novell.com/modules/xfmod/project/?ticklesharp
  14. 14. 14 Common Language Runtime CLR Motivos: Diminuir a combinação Linguagens x CPUs Operações simplificadas e unificadas entre plataformas Portabilidade e Segurança História: ~ 1970: P-Code (Pascal), D-Code (Gardens): 1 byte por instrução ~ 1990: Bytecode Java Informação simbólica embutida Offsets resolvidos na hora do “deployment”
  15. 15. Plataforma Mono
  16. 16. 16 Motivações Projeto MONO
  17. 17. 17 Plataforma Mono Muitas Linguagem e Muitas Plataformas Aproveita todas as características do mundo OpenSource Grande acesso a documentação JAVA e .NET Diversos Centros de capacitação já constituídos Comercialmente já aceito “Existe alguma grande empresa que de suporte?”
  18. 18. 18 Microsoft lança o .NET Projeto MONO Miguel busca uma nova plataforma para melhorar seus projetos. Microsoft Lança a plataforma .Net Coloca o C# como um padrão O Core do .Net é colocado como padrão Padrões ECMA 334 , ECMA 335 Plataforma Microsoft .Net Multi-linguagem Coletor de Lixo
  19. 19. 19 O que é ? Projeto MONO Mono é uma implementação OpenSource do .NET Permite a execução e desenvolvimento de software .Net em ambiente Não Windows. Suporte a C# 4.0 como padrão Parallel Framework Performance Large performance improvements LLVM support has graduated to stable Preview of the Generational Garbage Collector Version 2.0 of the embedding API WCF Routing
  20. 20. 20 Multi-Linguagem e Multi-plataforma
  21. 21. 21 O que é ? Projeto MONO
  22. 22. 22 Contribuições Microsoft MS-PL or Apache Licensed Libraries Ajax.NET, ASP.NET MVC1, MVC2, Silverligth ToolKit, Silverligth Tests Managed Extensibility Framework (MEF) System.Data.Services.Client (OData) Dynamic Language Runtime
  23. 23. 23 Suporte C# 3.0 e 4.0 mcs: compilador para rutime 1.1. gmcs: compilador para runtime the 2.0 runtime. smcs: compiledor para rutime 2.1para compilar aplicações Moonlight. dmcs: iniciado com Mono 2.6 para C# 4.0 Características já suportadas: anonymous methods , iterators,partial classes , Generics , Nullable Types, friend assemblies , static classes, property accessor accessibility, fixed buffers, external assembly alias, namespace alias qualifier , inline warning control , Extension Methods, LINQ syntax, Expression trees, Automatic properties, Lambda expressions, Anonymous types.
  24. 24. IKVM Interoperabilidade JAVA e .NET
  25. 25. 25 O que é O IKVM? O IKVM é uma VM JAVA escrita em C# que possibilita executar byte code Java no Mono além de um conjunto de ferramentas para conversão bytecode (java) -> IL (mono) e IL (mono)-> bytecode (java) http://www.ikvm.net
  26. 26. 26 Java Virtual Machine
  27. 27. 27 JAVA na IKVM
  28. 28. 28 JAVA na IKVM
  29. 29. 29 Instalação da IKVM apt-get install IKVM SUSE use o YAST No redhat tem pacotes prontos
  30. 30. 30 Como posso usar o IKVM? Rodando uma Classe Java (dinamicamente) Complilando um ByteCode para CLI (.jar->.dll) Compilando um CLI para ByteCode (.dll -> .jar) Usar uma classe Java no C# Usar uma classe C# no Java
  31. 31. 31 Rodando uma aplicação java no Mono -> javac *.java -> jar cfm hello.jar manifest.mf Hello.class -> ikvmc -reference:/usr/lib/ikvm/IKVM.GNU.Classpath.dll hello.jar -> mono hello.exe
  32. 32. 32 Usando uma Classe Java dentro do C# (jar -> dll) -> mcs -reference:IKVM.GNU.ClassPath hodgepodg.cs -> mono hodgepodge.exe Classe Java Código Java
  33. 33. 33 Usando as bibliotecas do Mono dentro do Java (dll -> jar) PASSOS: 1) Gerar os stubs de .NET para Java, isto irá resultar em um arquivo mscorlib.jar 2) Quando compilar as classes java irão fazer uso das bilbiotecas .NET bastando incluir o mscorlib.jar no classpath 3) Podemos ter 2 resultados: - criação dos binários Java para executá-los no IKVM - ou a conversão desses binários Java para . NET COMANDOS -> ikvmstub mscorlib.dll -> javac -classpath mscorlib.jar *.java -> ikvmc -reference:IKVM.GNU.Classpath.dll CreateFile.class -> ikvmc -reference:IKVM.GNU.Classpath.dll ShowDir.class
  34. 34. 34 CreateFile.java Biblioteca Mono
  35. 35. 35 ShowFile.java Biblioteca Mono
  36. 36. 36 Estendendo uma classe Java em C# 1) Criar a classe Java : “Subject.java” 2) Extender essa classe dentro do C#: “Exntesion.cs” 3) Compilar a classe java e gerar o .JAR 4) Converter o .JAR para um .DLL com o IKVM 5) Compilar a classe extension.cs com mono COMANDOS -> javac *.java -> jar cvf subject.jar *.class -> ikvmc -reference:IKVM.GNU.Classpath.dll subject.jar -> mcs -reference:IKVM.GNU.Classpath.dll -reference:subject.dll extension.cs -out:extension.exe
  37. 37. 37 Herança!!!!! Subject.java
  38. 38. 38 Herança !! Extencion.cs
  39. 39. 39 Mono Movies Flash Aplicação Multi-linguagem Criar classe MyClass.java (desenha um gráfico na tela) A classe java usa as bibliotecas Mono (GTK#) para desenhar na tela Criar uma aplicação Boo para executar a classe Java Passos: compilar o Java -> converte para DLL -> compilar a aplicação Boo
  40. 40. 40 Exemplo
  41. 41. 41 Figure.java
  42. 42. 42 Ellipse.boo import system class Ellipse (Figure) protected w protected h def construct (x,y,rw,rh) super(x,y) w = rw h = rh override def print (): Console.Write("Ellipse [w:" + w + " h:" + h "] ") super() Herança Chamada a super Classe
  43. 43. 43 Circle.cs Herança Chamada a super Classe
  44. 44. 44 CASE Kidux Sistema para controle parental em uma distribuição linux para crianças Softwares em suma maioria escritos em java Mudança de requisito: Rodar no Windows Tem que ser simples de instalar Alta integração com windows Problemas : Necessidade da VM java Instalador grande(+10MB) difícil de fazer donwload Com IKVM Não precisa mais do java Caiu para menos de 2MB o tamanho Fácil integração com windpw
  45. 45. 45 Case Projeto Rhodes Projeto Militar Requisitos: Desenvolvimento Rápido Prototipagem rápida Baixo consumo de Banda Várias interfaces com usuário Redundância de Plataforma (Java, Mono e .NET)
  46. 46. 46 CASE Jsenna
  47. 47. 47 CASE : Arquitetura Jsenna Regras de Negócio em XML Framework Jsenna Abstração servidor de aplicação Implementação Em Aspx Mono Implementação J2EE Refactoring JSenna, JBanana, Jolt Frameworks Portados JBanana Jolt Venus Log4J Jasper JDBC PostgreSQL MySQL É possível hoje conectar no MySQL usando JDBC no Mono!!
  48. 48. 48
  49. 49. Alessandro de Oliveira Binhara Projeto MONO BRASIL binhara@monobrasil.org O Projeto Mono: Aplicações .NET para sistemas não Windows
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×