Programação Visual Aula 1 Plataforma .Net VB C++ C# JScript … ASP.NET: Web Services e Web and Web Forms Forms Windows Forms ADO.NET: Data Dados and e XML XML Base Class Library (Framework) Visual Studio.NET Common Language Specification Common Language Runtime 2 Mar-03 Programação Visual – Engenharia Informática - EST Setubal .NET Framework Architecture System.WinForms System.Web Web Services Web Forms ASP.NET Application Services Controls Drawing Windows Application Services System Base Framework ADO.NET XML SQL Threading IO Net Security ServiceProcess Common Language Runtime Type System Metadata Execution 3 Mar-03 Programação Visual – Engenharia Informática - EST Setubal Common Type System l Value types l int i; float f; enum State { Off, On } struct Point { int x, y; } Reference types 4 Primitives Enums Structs Classes Interfaces Arrays Delegates class Foo: Bar, IFoo { … } interface IFoo : IBar { … } string[] s = new string[10]; delegate void Empty(); Mar-03 Programação Visual – Engenharia Informática - EST Setubal Linguagens Intermédias e JIT’s Source code Managed code VB C# C++ Compiler Compiler Compiler Assembly IL Code Assembly IL Code Assembly IL Code Unmanaged Component Common Language Runtime JIT Compiler Native Code Operating System Services 5 Mar-03 Programação Visual – Engenharia Informática - EST Setubal Linguagens Intermédias e JIT’s 1. O código é escrito em C# 2. O código é compilado resultando num ficheiro .exe que contém 1. O programa em código MSIL (MS Intermediate Language) 2. Uma parte read-only com um cabeçalho PE standard (Win32-portable executable) 3. Uma função _CorExeMain do runtime .NET 3. Quando a aplicação é executada o SO carrega o PE e as Dinamyc Linked Lybraries (dll) tal como faz com qualquer PE válido. ... Incluindo o dll que exporta a função _CorExeMain (mscoree.dll) 6 Mar-03 Programação Visual – Engenharia Informática - EST Setubal Linguagens Intermédias e JIT’s 4. O carregador do SO salta para o ponto de entrada dentro do PE (exactamente como executa qualquer outro PE) Mas como o o SO não pode executar código MSIL (óbvio!), o ponto de entrada é uma pequena instrução que executa o salto para a função _CorExeMain do mscoree.dll 5. A função _CorExeMain inicia a execução do código MSIL que foi colocado na PE. Como o código MSIL não pode ser executado directamente, o CLR compila o MSIL, utilizando um compilador just-in-time, para instruções nativas da máquina (CPU) Note-se que a compilação do JIT ocorre à medida que os métodos do programa não evocados. O código executável é mantido em cache e recompilado apenas se existirem alterações 7 Mar-03 Programação Visual – Engenharia Informática - EST Setubal Linguagens Intermédias e JIT’s Podem utilizar-se três tipos de JIT’s 1. PreJIT 1. 2. JIT (por defeito ... Atenção!) 1. 3. 8 Geração de código na instalação (vantagens / desvantagens) Tal como descrito nos slides anteriores EconoJIT 1. Concebido para sistemas com recursos limitados 2. Code pitching – descarta código gerado quando faltam recursos ao sistema (memmória) 3. Vantagens/desvantagens Mar-03 Programação Visual – Engenharia Informática - EST Setubal .NET versus Java/J2EE .NET Class Library WebForms / WinForms CLR Always uses Native Code Compilation ASP.NET ADO.NET SOAP / XML 9 Java Core API Java Beans Java Swing Java Virtual Machine Native Code Compilation is optional JSP JDBC EJB / JMS / SOAP / XML Mar-03 Programação Visual – Engenharia Informática - EST Setubal