Interop itcare: Interoperabilidade Java e .NET
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Interop itcare: Interoperabilidade Java e .NET

  • 230 views
Uploaded 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......

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#

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
230
On Slideshare
230
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Alessandro de Oliveira Binhara Projeto MONO BRASIL binhara@monobrasil.org Interoperabilidade Java e .NET
  • 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 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. Plataforma JAVA
  • 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 Mire no elefante e acerte na mosca!
  • 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. Plataforma .NET
  • 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 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 Interoperabilidade entre Linguagens
  • 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 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 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. Plataforma Mono
  • 16. 16 Motivações Projeto MONO
  • 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 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 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 Multi-Linguagem e Multi-plataforma
  • 21. 21 O que é ? Projeto MONO
  • 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 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. IKVM Interoperabilidade JAVA e .NET
  • 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 Java Virtual Machine
  • 27. 27 JAVA na IKVM
  • 28. 28 JAVA na IKVM
  • 29. 29 Instalação da IKVM apt-get install IKVM SUSE use o YAST No redhat tem pacotes prontos
  • 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 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 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 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 CreateFile.java Biblioteca Mono
  • 35. 35 ShowFile.java Biblioteca Mono
  • 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 Herança!!!!! Subject.java
  • 38. 38 Herança !! Extencion.cs
  • 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 Exemplo
  • 41. 41 Figure.java
  • 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 Circle.cs Herança Chamada a super Classe
  • 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 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 CASE Jsenna
  • 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
  • 49. Alessandro de Oliveira Binhara Projeto MONO BRASIL binhara@monobrasil.org O Projeto Mono: Aplicações .NET para sistemas não Windows