- Эмуляторы Java для Android
- Эмуляторы Java для Андроид
- J2ME Loader
- Java J2ME Runner
- Виртуальная машина java для андроида
- Virtual Machine in Android: Everything you need to know
- Virtual Machine?
- Java Virtual Machine
- How it works?
- Android OS
- Why Android use virtual machine?
- Dalvik Virtual Machine
- Dalvik EXecutable
- Compare with Java VM
- Android Runtime
- Just-In-Time vs Ahead-Of-Time
- Compare with Dalvik VM
- Optimized Garbage Collector
- In Conclusion
Эмуляторы Java для Android
Эмуляторы Java для Андроид
Программы, способные запускать J2ME-приложения (мидлеты), появились почти одновременно с самой ОС от Google, однако актуальных на сегодняшний день осталось немного. Начнем с наиболее популярного решения.
J2ME Loader
Новейший эмулятор Java-мидлетов, появившийся летом 2017 года. Является улучшенной версией J2meLoader, постоянно обновляется и обретает новые возможности. В отличие от конкурентов, Дж2МЕ Лоадер не требует предварительного конвертирования JAR- и JAD-файлов в APK — эмулятор умеет делать это на лету. Список совместимости тоже выглядит внушительнее, чем у других эмуляторов – поддерживаются приложения вроде Opera Mini и практически все 2D-игры.
А вот с 3D-играми ситуация сложнее – эмулятор умеет запускать лишь некоторые из них вроде особым образом модифицированных версий Galaxy on Fire 1 или Deep 3D. Огорчим желающих поиграть в 3D-игры для Sony Ericcson – они на J2ME Loader не работают и вряд ли заработают вообще. Однако в целом это приложение является одним из самых дружелюбных к пользователю – достаточно просто скачать JAR-файл с игрой и запустить через эмулятор. Для продвинутых пользователей предусмотрены настройки. Рекламы или любого другого вида монетизации в Дж2МЕ Лоадер пока нет, но присутствуют баги (которые, впрочем, оперативно исправляются).
Java J2ME Runner
Довольно старый, но все еще актуальный эмулятор для запуска Джава-мидлетов. Главная особенность – модульность приложения: почти все основные возможности (управление, графические настройки, прочее) реализовано с помощью плагинов. Устанавливать свои плагины или менять имеющиеся нельзя – можно только включать и отключать их.
Совместимость у эмулятора довольно высокая, однако JAR-файлы нуждаются в предварительном конвертировании в APK сторонним методом либо встроенными средствами приложения. Поддержка 3D очень ограничена. Из недостатков: несовместимо с девайсами под управлением Android 7.0+, высокие расширения экрана (FullHD и выше) приводят к графическим багам, морально устаревший интерфейс. Пожалуй, можем рекомендовать этот эмулятор только в качестве единственной альтернативы упомянутому выше J2ME Loader.
Существуют и другие эмуляторы (к примеру, популярный в 2011-2012 годах JBed), однако они на данный момент уже неактуальны, и на современных устройствах неработоспособны.
Помимо этой статьи, на сайте еще 12476 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник
Виртуальная машина java для андроида
Описание:
Запуск Java(не J2ME) приложений под андроидом, есть поддержка Swing, AWT, нет поддержки JavaFX, поддерживается только ARMv7.
Приложение доступно по подписке за 24.95$ в месяц и триал на запуск приложения на одну минуту.
Разработчик: Apogee Software, Inc.
Домашняя страница: http://www.apogee.com/
Скачать: версия: 0.6com.apogee.android.jre4a.apk ( 46.4 МБ )
Версия со взломанным триалом(приложение не закроется через минуту): jre-signed.apk ( 46.4 МБ )
Сообщение отредактировал ga2mer — 30.08.14, 16:37
andremansd, а более поздние версии запустить можно? Там же вроде есть тач управление.
Сообщение отредактировал ibog1999 — 13.09.14, 15:11
Нет, начиная с 1.3.0 нужна JFX, а этим здесь даже не пахнет
Попробовал запустить 1.2.5 вылетело. Сейчас попробую Indev и 0.9
Сообщение отредактировал MaHiaK_biosa — 13.09.14, 20:25
Пробовал запустить Minecraft Alpha v1.1.0. Результат: запуск команды «help», вылет. Добавлено 15.09.2014, 08:05:
Щас попрбую запустить Survival Test 0.30 .
Запустил, результат такой же, как и при запуске Alpha v1.1.0. :wallbash:
Щас если не запустит другую версу, то :comando:
Сообщение отредактировал Gridzilla — 16.09.14, 09:25
Сообщение отредактировал Gridzilla — 16.09.14, 09:25
Можно ли тут запустить онлайн игру?
Игра Во вложении
Lordy.jar ( 332.95 КБ )
Сообщение отредактировал DREMBAS — 15.09.14, 14:25
rinaldo2001,я вам все разжую, но у вас должно быть разрешение экрана не менее 800х480.
А, и еще. Сегодня выложу подробную инструкцию и файлы, что куда кидать и что и как писать и запускать.(у меня телефон навернулся, баловался с плотностью экрана(точки на дюйм)), поэтому запускать майн будете ВЫ, ОБЛАДАТЕЛИ ПЛАНШЕТОВ и БОЛЬШИХ СМАРТФОНОВ!
Сообщение отредактировал andremansd — 15.09.14, 19:46
Как запустить Minecraft в программе JRE4A (не запускается)
Версия Minecraft: Classic v0.0.13_03
Внимание. Ничего не работает. Скачивайте Boardwalk!
Инструкция:
1. Распакуйте архив в /mnt/sdcard(внутренний накопитель). Почему на внутренний накопитель, потому что в коде написано! Если у вас не sdcard, а sdcard0, то в коде везде где есть слово sdcard, туда добавить «0» без кавычек!
2. Зайдите в директорию /mnt/sdcard(внутренний накопитель)/0.0.13_03
3. Откройте run.txt любым файловым менеджером(я использую X-Plore) и скопируйте весь текст в буфер обмена(просто скопируйте 😀 )
4. Открывайте JRE4A, высветится диалоговое окно. Нажмите на кнопку триал(обязательно должна быть установлена взломаная версия на неограниченный триал!)
5. Нажмите кнопку «Меню» и выберите пункт Add Java Program(я точно не помню, как пункт называется, так как телефон накрылся. Все пункты не проверялись!
Вот архив:0.0.13_03.zip ( 1.79 МБ )
Ничего здесь не работает. Качайте Boardwalk и играйте!
Minecraft-JRE4A.zip ( 53.24 МБ )
run.txt ( 109 байт )
Сообщение отредактировал andremansd — 12.12.15, 22:36
Даже не включается, сразу вылет
Сообщение отредактировал DREMBAS — 15.09.14, 23:14
Источник
Virtual Machine in Android: Everything you need to know
Aug 4, 2019 · 6 min read
Virtual Machine?
A virtual machine is based on computer architectures to provide functionality of a computer.
There are 2 main types of Virtual Machine (VM):
- System virtual machines (full virtualization VMs) provide a substitute for a real machine.
- Process virtual machines are designed to execute computer programs in a platform-independent environment.
Java Virtual Machine
Follow “write once, run anywhere” principle, JVM allows programs — written in Java/Kotlin — to run on any device or operating system.
How it works?
IDEs — like IntelliJ / Android Studio — use Java Compiler ( javac ) to compile Java code ( .java ) into Java bytecode ( .class ).
Then on runtime environments (Web, PC, Android), JVM translates it into machine specs instruction set that this environment can understand.
- Start JVM.
- Start main thread. Load .class into memory using Classloader.
- Verify bytecode is valid and not violate Java’s security restrictions.
- Translate bytecode into machine instructions and execute them.
- Unload classes. Terminate main thread.
- Shutdown JVM.
Note that: It’s possible to compile Java code to native code ahead-of-time, then run. And it’s also possible to interpret Java code directly.
Android OS
Android is an open source, Linux-based software stack created for a wide array of devices and form factors. For example, the Android Runtime (ART) relies on the Linux kernel for underlying functionalities: networking, multi-threading and low-level memory management.
Why Android use virtual machine?
There are many reason that Google engineers decide to use Android with VM, but two main reason is:
- Security: In theory, app code is totally isolated by the VM and cannot even “see” the host OS. So app code that contains malware cannot affect system directly, make app and system more robust and reliable.
- Platform independent: Android platform can run on different devices with different architectures (ARM, MIPs, x86). To abstract out the need to compile binaries for each architecture, VM comes into play.
Dalvik Virtual Machine
Dalvik Virtual Machine (DVM) is a Process virtual machine for Android.
DVM is a virtual machine that optimized for mobile environment (memory, battery life, performance. )
Dalvik EXecutable
Dalvik EXecutable ( .dex ) is Dalvik bytecode which translated from Java bytecode using dx tool (replaced by D8 tool since API 28). This format was designed for systems that have constrained memory and processor speed.
Multiple classes are included in a single .dex file:
Compare with Java VM
The DVM was built specifically for Android, to address the battery life, processing speed. Moreover, the Java tools are free but the JVM is not, so Google engineers made their own VM and made it as free.
Unlike JVM, which are simple stack machines, the DVM uses a register-based — which requires fewer instructions, fewer code units, avoid unnecessary memory access — resulting in better performance code.
Android Runtime
Android Runtime (ART) is the managed runtime used by apps and system services on Android. Replacing the predecessor Dalvik, ART performs the translation of the app’s bytecode into native instructions that are later executed by the device’s runtime environment.
The ART is written to run multiple VMs on low-memory devices. To maintain backward compatibility, ART also uses the same input bytecode as Dalvik — the standard Dalvik EXecutable ( .dex ) files — which also designed for Android to minimize memory footprint.
From Android 5.0, each app runs in its own process, with its own instance of ART. But prior to this, it use Dalvik. If your app runs well on ART, then it should work on Dalvik as well, but the reverse may not true.
Just-In-Time vs Ahead-Of-Time
Just-In-Time (JIT) added in Android 2.2. It dynamically compiles bytecode into native machine code at run-time to make app runs faster. It does all this while app is running, and that’s where the “Just-In-Time” comes from.
Ahead-Of-Time (AOT) added in Android 4.4. It statically compiles bytecode into machine code at install-time — using on-device dex2oat tool — and stores data in the device’s storage, to improve run-time performance.
Compare with Dalvik VM
Dalvik is a JIT compilation based engine.
The ART includes a JIT compiler (with code profiling). The JIT compiler complements new AOT compiler and improves runtime performance, speed up apps and system updates.
Furthermore, ART has many more advantage:
- Optimized garbage collector: one GC pause instead of two.
- Loop optimizations: Bounds check, Induction variable is eliminated.
- Faster native calls using @FastNative and @CriticalNative annotations.
- Improve battery life.
- Reduce startup time as native code is directly executed.
- Faster runtime performance because AOT compile at install-time.
- From API 28, convert APK’s DEX files to more compact machine code.
- Better debugging support (dedicated sampling profiler, detailed exceptions reporting, and ability to set watchpoints to specific fields).
Optimized Garbage Collector
Garbage Collector (GC) can impact app’s performance with “stop-the-world” events, which resulting in frozen frames, poor UI responsiveness. The default GC plan is the CMS (concurrent mark sweep).
The ART improves GC in several ways:
- The number of pauses is reduced from 2 to 1 compared to Dalvik. Dalvik’s first pause — which mostly root Marking — is done concurrently in ART by getting the threads to mark their own roots.
- Parallelized processing in the second pause (before Sweeping phase).
- Increased GC throughput enabled by the sticky CMS collector.
- Reduce total time when clean up recently-allocated, short-lived objects.
- Performs heap compaction — when app changes process state to background or cached — to reduce background memory usage.
In Conclusion
Before Android 5.0 (API 21), Android use Dalvik Virtual Machine (DVM) — a Process virtual machine — that optimized for mobile environment (memory, battery life, performance. ).
After that, each Android app runs in its own process and with its own instance of the Android Runtime (ART) — an app runtime environment used by Android OS. Replacing Dalvik, ART performs the translation of the app’s bytecode into native instructions that are later executed by the device’s runtime environment.
Источник