Java ja.NET Framework programmide kompileerimine masinkoodi Siim Karus.

Slides:



Advertisements
Similar presentations
Ahead of Time Dynamic Translation PreJit/NGEN by any other name George Bosworth Microsoft MRE04 March 21, 2004.
Advertisements

By Sam Nasr September 28, 2004 Understanding MSIL.
© 2003 School of Computing, University of Leeds SY32 Secure Computing, Lecture 16 Secure Coding in Java and.NET Part 1: Fundamentals.
.NET Framework Overview
C# An overview. Visual C# Microsoft describes C# as a simple, general-purpose programming language that enables you to build rich, connected Web and client.
Heiki Tähis MCT, MCITP, MCPD. Windows Server 2008 Windows Server 2008 R2 Windows Hyper-V Server Windows Home Server Windows Storage Server Windows Server.
.NET Framework Overview
1 Owais Mohammad Haq Department of Computer Science Eastern Michigan University April, 2005 Java Script.
Programming Our First Java Program Yingcai Xiao. What to Do Set up for Java Programming Write our first Java Program with IDE Write our first Java Program.
Revealing the CLR 4.0 Internals Svetlin Nakov Telerik Corporation
Data Structure and Algorithm 1 Yingcai Xiao. You Me The Course (
Programming A Historic Perspective on Code Reuse Yingcai Xiao.
J2EE vs..NET Tom Tong. Enterprise Application 1 distributed 2 multiple-platform 3 critical 4 performance 5 security 6 multiple-data sources.
Code-Reuse A Historic Perspective Yingcai Xiao. Want to know? Why we have to write programs to run a computer? Why an error in a program is called a bug?
Windows Programming.NET Overview Yingcai Xiao. What is a Computer? From the Webster’s New World Dictionary: 1. A person who computes. 2. A device used.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
01 Introduction to Java Technology. 2 Contents History of Java What is Java? Java Platforms Java Virtual Machine (JVM) Java Development Kit (JDK) Benefits.
Microsoft.Net vs. J2EE Suresh Ramachandran Duke Energy.
Korporatiivse informatsiooni integratsioon Tehnoloogiad EAI, EII, ETL.
Lecturer PEN PHIROM Tel : Web site: Lecturer PEN PHIROM Tel :
1 8/29/05CS360 Windows Programming Professor Shereen Khoja.
.NET Overview. 2 Objectives Introduce.NET –overview –languages –libraries –development and execution model Examine simple C# program.
11 Getting Started with C# Chapter Objectives You will be able to: 1. Say in general terms how C# differs from C. 2. Create, compile, and run a.
Understanding Code Compilation and Deployment Lesson 4.
Agiilne tarkvaraarendus kui tarkvara kvaliteedi tõstmise vahend Erik Jõgi
Compiling and Executing Code in.Net Microsoft Intermediate Language and Common Language Runtime.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
C# Overview and Features. Content I.History of C# II.Architecture III.How to install IV.Features V.Code Sample VI.Microsoft.NET Platform VII.Why use C#
Computing with C# and the.NET Framework Chapter 1 An Introduction to Computing with C# ©2003, 2011 Art Gittleman.
Tutorial 1. Q1: Compare and contrast between multiprocessors and multicore Multicore – Dual-core processor has two cores (e.g. AMD Phenom II X2, Intel.
FRST JAVA PROGRAM. Getting Started with Java Programming A Simple Java Application Compiling Programs Executing Applications.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 13 Java on Various Computer Platforms.
IT Kolledzh/TTÜ 2002 T.Tammet IT sissejuhatus loeng 11 lk Sissejuhatus informaatikasse.
Introduction to VB.Net. What is.NET? A brand of Microsoft technologies A platform for creating distributed Web applications A combination of new and updated.
Languages and IDE (Integrated Development Environment)
C# Versus Java Author: Eaddy, Marc Source: Software Tools for the Professional Programmer. Dr. Dobb's Journal. Feb2001, Vol. 26 Issue 2, p74 Hong Lu CS699A.
Kas Internet’i regulatsioon on võimalik? Euroopalikud vastused Infopoliitika FOORUM 26.veebruaril 2004 Andres Jõesaar.
National Taiwan University Department of Computer Science and Information Engineering National Taiwan University Department of Computer Science and Information.
4-Nov-15 Air Force Institute of Technology Electrical and Computer Engineering Object-Oriented Programming Design Topic 1: The Java Environment Maj Joel.
Tina Deol Anand Patel Ajit Thagad Yvonne Lee Alvin Lee Bill Maloney Kevin Pedra.
Module 3: Using Microsoft.NET- Based Languages. Overview Overview of the.NET-Based Languages Comparison of the.NET-Based Languages.
ISO Java Standardization Profile Mitsukazu Uchiyama Toshiba Corporation
Duke CPS Java: make it run, make it right, make it fast (see Byte, May 1998, for more details) l “Java isn’t fast enough for ‘real’ applications”
Lecture1 Instructor: Amal Hussain ALshardy. Introduce students to the basics of writing software programs including variables, types, arrays, control.
3/5/2002e-business and Information Systems1 Java Java Java Virtual Machine (JVM) Java Application Program Interface (API) HW Kernel API Application Programs.
BIOTEHNOLOOGIABIOTEHNOLOOGIA. Mis on biotehnoloogia? Biotehnoloogia on rakendusbioloogia haruteadus, mis kasutab organismide elutegevusel tuginevaid protsesse.
Suresh Ramachandran Duke Energy
Frank McCown TechLunch Old Dominion University March 28, 2007
C# and the .NET Framework
Miks doc-formaadis fail ei ole hea?
2.1. Compilers and Interpreters
4. Component-based Architecture
Java Background v Sep-18.
.NET Framework: Backdoors
Introduction to C# AKEEL AHMED.
Süsteemprogrammeerimine keeles C ja C#
Advanced Programming: C# Lecture 01: Introduction
Süsteemid ja protsessid sinu arvutis
Failisüsteem Windowsis
Failid ja kaustad 27. november a..
.NET Overview Yingcai Xiao.
Visual Programming Lecture 1.
TypeScript (Microsoft)
Frank McCown TechLunch Old Dominion University March 28, 2007
TypeScript (Microsoft)
Outcome of the Lecture Upon completion of this lecture you will be able to understand Fundamentals and Characteristics of Java Language Basic Terminology.
Presentation transcript:

Java ja.NET Framework programmide kompileerimine masinkoodi Siim Karus

Kava Sissejuhatus –Mis on baitkood või vahekeel? –Võrdlus masinkoodiga –Koodi sogastamine –Masinkoodiks kompileerimine Java –Kuidas töötab Java? –Kuidas kompileerida Java baitkoodi masinkoodi?.NET Framework –Kuidas töötab.NET Framework? –MSIL? –Kuidas kompileerida.NET Framework vahekeelt masinkoodiks?

Mis on baitkood? Käivitatavat programmi sisaldav binaarfail, mille moodustavad operatsiooni koodi ja andmete paarid (The Free On-line Dictionary of Computing ).The Free On-line Dictionary of Computing Ka masinkood on tegelikult (enamasti) baitkood. Mõistet baitkood kasutatakse tihti märkimaks keeli, mis on inimese jaoks loetamatud kuid pole masinkood.

Mis on vahekeel? Keel, mis on teiste keelte vahel (näiteks ühest keelest teise transleerimiseks). Pole mõeldud otse programmeerimiseks. Lihtsalt dekompileeritav.

Interpreteeritav vahekeel vs. masinkood Vahekeel Võimalik käivitada igal platvormil, millele on loodud interpretaator Reeglina sisaldab täiendavat informatsiooni programmi kohta Masinkood Optimeeritud oma platvormile, seega kiirem oma platvormil Raskem dekompileerida

Miks kompileerida baitkood masinkoodiks? Jõudlusvõit

Miks kompileerida baitkood masinkoodiks? Mugavam paigaldus (pole vaja eraldi paigaldada interpretaatorit) Lihtsam kaitsta intellektuaalomandit (dekompileerimine, algoritmide eraldamine ja neist aru saamine on keerulisemad) –Lisaks kasutatakse koodi sogastamist

Koodi sogastamine Muudame meetodite, klasside ja nimeruumide nimed. Lisame täiendavaid “vigaseid” metaandmeid. Lisame koodjuppe, mida reaalselt ei käivitata. Krüpteerime koodijupid/sõned.

Koodi sogastamine

Koodi sogastamine (dotfuscator community edition)

Kompileerimine masinkoodiks Kasutusel kaks lahendust –JIT (Just-In-Time) Kompileeritakse hetkel mil koodi reaalselt kasutada on vaja –AOT (Ahead-Of-Time) Kompileeritakse enne koodi kasutamist

Java = platvorm + keel

Java rakenduste tööpõhimõte.java inimesele loetav lähtekood kompileeritakse javac abil Java baitkoodi. Käsuga java käivitatakse interpretaator (Java Virtual Machine ehk JVM), mis interpreteerib baitkoodi.

Java baitkoodi kompileerimine masinkoodi (JHSVM) Java HotSpot Virtual Machine (J2SE SDK-ga kaasas, kasutab ka näiteks Bea) kompileerib tihedamini kasutatavad koodijupidJava HotSpot Virtual Machine –klient (java –client minu.class ) ja –server (java –server minu.class) mood Tegemist JIT kompilaatoriga

Java baitkoodi kompileerimine masinkoodi (Excelsior JET) Excelsior JET kompileerib kogu koodi (AOT kompilaator)Excelsior JET Võimaldab panna kompileeritud koodi suhtlema Java baitkoodis olevate klasside ja objektidega Viited Java API klassidele ja meetoditele asendatakse viidetega Excelsior JET enda teekidele

Java baitkoodi kompileerimine masinkoodi (Excelsior JET)

Java baitkoodi kompileerimine masinkoodi (GCJ) GCJ kompileerib kogu koodi (AOT kompilaator)GCJ GCC (Gnu Compiler Collection) osa Vaba vabavaraline tarkvara Konsoolirakendus gcj --main=HelloWorld -o HelloWorld HelloWorld.java./HelloWorld Seob Java C++-ga (GCC jaoks on Java C++ kärbitud versioon + API komponendid)

.NET Framework = platvorm Baseerub ECMA standarditel ja raportitel: –CLI: ecma-335, TR-84 ja TR-89 –C# (keel loodud spetsiaalselt.NET Framework jaoks): ecma-334 tulevikus ISO/IEC. European Computer Manufacturers Association Common Language Infrastructure International Organization for Standardization International Electrotechnical Commission

.NET Framework = platvorm Algatajad olid Microsoft Corporation, Hewlett- Packard ja Intel Corporation (1. oktoober 2000). Arendamisest on osa võtnud veel Borland, Fujitsu, Hewlett-Packard, Intel Corporation, International Business Machines, ISE, IT University Copenhagen, Microsoft Corporation, Monash University, Netscape, Novell Corporation, OpenWave, Plum Hall, Sun Microsystems ja University of Canterbury New Zealand

.NET keeled

.NET Framework

.NET Framework rakenduste tööpõhimõte 1 1.Rakendus kompileeritakse MSIL failiks (tulemuseks.il fail). 2.Lisatakse “assembly-manifest” (fail sõltuvuste, metaandmete ja rakenduse turvainfoga seonduva infoga) ning lisatakse PE kood (tulemuseks.exe või.dll assembly). Samas optimeeritakse koodi. (ilasm) 3.Käivitades rakenduse.NET Framework kompileerib käivitatava koodi (JIT tüüpi kompilaator).

.NET Framework rakenduste tööpõhimõte 1 Tulemus:

.NET Framework rakenduste tööpõhimõte 2 1.Rakendus kompileeritakse MSIL failiks (tulemuseks.il fail). 2.Lisatakse “assembly-manifest” (fail sõltuvuste, metaandmete ja rakenduse turvainfoga seonduva infoga) ning lisatakse PE kood (tulemuseks.exe või.dll assembly). Samas optimeeritakse koodi. (ilasm) 3.Loodud assembly kompileeritakse ngen abil masinkoodiks. 4.Käivitades rakenduse tegeleb.NET Framework vaid mälu haldamisega (ega interpreteeri koodi).

.NET Framework “Assembly Cache” Kahte tüüpi vahemälu: –MSIL assembly cache Võib olla osaliselt kompileeritud JIT poolt Lisab versioneeritud komponentide/moodulite kasutamise võimaluse –Native image cache ngen tööriista (AOT kompilaator) poolt kompileeritud (ja platvormile/riistvarale optimeeritud) moodulid ja komponendid ngen = Native Image Generator Tool

MSIL Punktiga algavad read on kompilaatori direktiivid. Ilma punktita algavad read sisaldavad MSIL käske. Meetodil tagastustüüp ja nimi, argumendid, sisu { ja } poolt eraldatud blokis. Sarnane assemblerile ja C++-le.

MSIL Näide:.assembly AssemblyNimi {}.method static void HelloWorld() {.entrypoint ldstr “Hello World.” call void [mscorlib]System.Console::WriteLine(class System.String) ret } Kompileerime: ilasm HelloWorld.il Märgib programmi käivitamisel käivitatavat meetodit Paneb stringi pinusse Kutsub mscorlib.dll nimeruumi System klassi Console meetodit WriteLine Väljub meetodist

MSIL kompileerimine masinkoodi (Salamander) Salamander võimaldab kompileerida.NET Framework-i kasutava rakenduse masinkoodi kompileerides (staatiliselt) sisse ka kõik vajalikud lisakomponendid.Salamander Integreeritav Visual Studioga.

Tänan Küsimused?