Ответы пользователя по тегу JVM
  • Чем создание JVM под конкретные платформы "лучше", "проще", "продвинутее", "правильнее" написания компиляторов под те же платформы?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Упрощения для разработчиков инструментальных средств - это тема очень непростая. Намного легче объяснить плюсы с позиции прикладного программиста и пользователей ПО. В 2003-м году я участвовал в разработке одной системы на Java EE. Написанный мной и другими разработчиками код был скомпилирован с помощью Java 1.4, упакован в war и развёрнут на сервере заказчика. Это был сервер с 32-битными процессорами Xeon Prestonia, работавший под управление FreeBSD. Позже это приложение в том же war-файле было перенесено на сервер Fujitsu PRIMEPOWER с процессорами абсолютно иной архитектуры - SPARC, и управляемый очень отличающейся операционной системой - Solaris. Сейчас оно крутится на IBM'овских блэйдах c процами POWER и под управлением AIX, на сколько мне известно. Не удивлюсь, если через некоторое время приложение перенесут на что-нибудь с ARM'ами и под Linux или HP-UX. Все эти миграции выполняются без перекомпиляции и без привлечения разработчиков. Если бы приложение было написано на чём-нибудь вроде C++, код приложения пришлось бы портировать на каждую платформу и перекомпилировать. Это было долго, сложно и очень дорого.
    Ответ написан
  • Почему Android до сих пор так зависим от jvm?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Во-первых, Kotlin работает на JVM. Во-вторых, программы на C# будут выполняться на виртуальной машине CLR, что тоже не нативная платформа. В-третьих, достаточно знать назначение виртуальных машин, чтобы получить ответ на ваш вопрос. Кроссплатформенность в мобильной разработке имеет ещё большее значение, чем в какой-либо другой.

    И наконец, вы не правы в этом

    Не верю, что среда jvm когда-либо научится использовать ресурсы системы оптимальнее чем нативная платформа.

    Java-код может быть быстрее нативного. Ещё в 2009-м Джеймс Гослинг говорил:

    These days we’re beating the really good C and C++ compilers pretty much always. When you go to the dynamic compiler, you get two advantages when the compiler’s running right at the last moment. One is you know exactly what chipset you’re running on. So many times when people are compiling a piece of C code, they have to compile it to run on kind of the generic x86 architecture. Almost none of the binaries you get are particularly well tuned for any of them. You download the latest copy of Mozilla,and it’ll run on pretty much any Intel architecture CPU. There’s pretty much one Linux binary. It’s pretty generic, and it’s compiled with GCC, which is not a very good C compiler.

    When HotSpot runs, it knows exactly what chipset you’re running on. It knows exactly how the cache works. It knows exactly how the memory hierarchy works. It knows exactly how all the pipeline interlocks work in the CPU. It knows what instruction set extensions this chip has got. It optimizes for precisely what machine you’re on. Then the other half of it is that it actually sees the application as it’s running. It’s able to have statistics that know which things are important. It’s able to inline things that a C compiler could never do. The kind of stuff that gets inlined in the Java world is pretty amazing. Then you tack onto that the way the storage management works with the modern garbage collectors. With a modern garbage collector, storage allocation is extremely fast.
    Ответ написан
  • Возможно ли провернуть такой финт ушами на java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Эту задачу можно решить используя Compiler API. Пример использования можете посмотреть в этом ответе.
    Ответ написан
  • Можно ли встроить JVM в desktop приложение?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Есть возможность добавлять в инсталлятор этап установки JRE. Лицензия это не ограничивает.
    Ответ написан