Содержание
- 2. What it is all about? Идеология Java Classfile Константный пул Структура и идеология машины Идеология системы
- 3. Java Technology (Введение) Java предложена фирмой SUN Microsystems 1991 г. James Gosling – язык Oak 1995
- 4. What is this all for? H.JAR DESKTOP iPAQ PALM SMARTPHONE CELLPHONE EMBEDDED MEDICAL SYSTEM WEB SERVER
- 5. Путь кода в JAVA b.java b.java a.java JAR (jar) ZIP b. class b. class a.class Compiler
- 6. OOP (JIC) Moveable SetPosition() ValidatePos() ValidatePos() Figure Draw() SetColor() ValidatePos() 2DPoint Pos
- 7. CLASS FILE
- 8. Classfile structure (идеалогия) Программные компоненты Java распространяются в виде набора classfile-ов (или их архивов JAR) Наследование
- 9. Classfile structure (метафора) Каждый classfile – представляет данные одного класса или интерфейса Он не обязан содержать
- 10. Classfile structure (что содержит) Пул констант Тип класса (доступ, наследование итп) Ссылку на класс-предок (суперкласс) Набор
- 11. Classfile structure (константный пул) Набор записей позволяющих разрешать ссылки при связывании и выносить констнты из кода
- 12. Пример CONSTANT_Methodref_info CONSTANT_Class_info COCONSTANT_NameAndType_info CONSTANT_Utf8_info
- 13. Attributes SourceFile - описание исходника ConstantValue – описание константы Code –описание кода Exceptions – список исключений
- 14. Methods and attributes method_info { u2 access_flags; u2 name_index; u2 descriptor_index; u2 attributes_count; attribute_info attributes[attributes_count]; }
- 15. JVM
- 16. Спецификация JVM В всей полноте описывает «что?» Не описывает «как?»
- 17. JVM Subsystems Исполняет Собирает мусор Ищет узкие места Ведет статическую предпроверку
- 18. JVM (структура JAVA машины) Многопоточность Поддержка исключений Модель абстрактной памяти построенной на ссылках на объекты Автоматическая
- 19. JVM (структура JAVA машины) JVM – абстактная стековая машина с локальными переменными Каждый поток в JVM
- 20. JVM Thread 1 Thread 2 JVM Op Stack Local Variables Parameters Frame3 Runtime constpool
- 21. MEMORY HEAP Thread 1 JVM Thread 2 FRAME2 ALU FRAME2 FRAME1 FRAME1 FRAME STACK (call stack)
- 22. BYTE code (Концепции) Байткоды имеют опкод в 8 бит и расширяются байтово Байткоды имеют структуру кеширующю
- 23. BYTE code (Типы данных) byte - 8-bit знаковое целое short - 16-bit знаковое целое int -
- 24. BYTE code (типы) Работа с константами Push байт-коды Сохранение и загрузка локальных переменных Pop байт-коды и
- 25. Size reduction iconst_m1 iconst_n n = if (x 3) then x – 3 else OTHER_OPCODE push
- 26. Vierifier invoke virtual Метод ДОЛЖЕН БЫТЬ этого класса или класса предка. А кто проверит? verifier В
- 27. JIT Pros vs Cons Time – 2x-40x faster Memory Overhead – 5x-10x Compilation JIT Just-In-Time AOT
- 28. Garbage collection (общие мысли) Мусор в Америке – федеральная собственность А некоторые считают – это для
- 29. Obfuscation
- 30. Obfuscation and Java Pros Она на самом деле необходима Java машина очень распростанена Обфускация экономит место
- 31. Decompilers Goto Бывает класс «for» и «synchronized» в байт-коде но не бывает таких классов в Java
- 32. Decompilers int tmp; tmp = a; a = b; b = tmp; iload_0 istore_2 iload_1 istore_0
- 33. Obfuscation - Names and profiles (Retroguard) GNU GPL Скриптовый
- 34. Names and profiles (JODE) GNU GPL Переименование классов, методов и полей Удаление отладочной информации Удаление «мертвого»
- 35. Names and profiles (SandMark) Работа Аризонского университета – выполняет watermarking, tamper-proofing и code obfuscation Основан на
- 36. Names and profiles (DashO) Commercial Sun’s choice Features Package/Class/Method/Field renaming using our patented Overload-Induction(tm) renaming system
- 37. Names and profiles
- 38. Where is more information available? Исчерпывающая информация о Java машине содержится в спецификации SUN и больше
- 39. THE END Спасибо за внимание
- 41. Скачать презентацию