Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

ЯП Java – безопасный. (Безопасность. Поскольку Java изначально планировался для создания коммерческих приложений, которые не только могут распространяться по сетям, но и сами способны работать с сетями, разработчики языка постарались уделить безопасности




ЯП Java – безопасный

(Безопасность. Поскольку Java изначально планировался для создания коммерческих приложений, которые не только могут распространяться по сетям, но и сами способны работать с сетями, разработчики языка постарались уделить безопасности максимум внимания. Полученный по сети байт-код проверяется на правильность инструкций (принадлежность к байт-коду Java), на безопасность команд для компьютера и локальной сети, на соответствие разрешенным операциям, а также на целый ряд прочих условий. )

А вопрос безопасности кто должен решать? Кто-нибудь из вас занимался безопасностью? И не занимайтесь. Для этого должен быть профессионал. Есть книжки, которые рассказывают про саму виртуальную машину. Там есть глава по безопасности. Авторы книги говорят следующее: мы прежде чем исполнять байт-код проверяем его. Мы, конечно, понимаем, что нельзя сделать все проверки, но всё до чего мы додумались – мы сделали. Поэтому за 20 лет работы виртуальная машина не будет исполнять лажу. Это все уже часть платформы. Да, вы можете использовать безопасность в своем коде, но это отдельная и сложная тема, и ни в какие курсы, к сожалению, это не попадает, потому что к языку это не имеет никакого отношения. Приведу небольшой пример:

Представьте, что вызывается какой-то метод. Вы там на входе можете поставить проверку, где вы будете спрашивать «а кто меня вызывает? Ты вот такой-то-такой-то-такой-то? », если нет, то «до свидания». Такая возможность есть. И вы спросите, «и это все запрограмированно? » Идея, инфраструктура – да, но ваш код проверки является вашим кодом.

ЯП Java – нейтральный и переносимый

Это работает до 7 версии, а в 8 версии от этого немного отошли. Есть одна технология, которая работает только на трех платформах. Но это разумно. У нас стоит сложная задача создать современную клиентскую часть: мультимедиа, анимация… Но клиентские платформы – это же не Solaris. Поэтому клиентские платформы – это подмножество из всего набора платформ. Поэтому эта современная технология для разработки клиентских приложений JavaFX, которая работает на трех платформах.

В Microsoft пользовательский интерфейс тоже будет работать на тех же трех платформах.

ЯП Java – высокопроизводительный

( Высокая производительность. По скорости работы Java-приложения вполне соизмеримы с приложениями, разработанными на языках C и C++, оказываясь иногда производительнее последних. Можно считать, что генератор " родного" кода исполнительной машины встроен в динамический загрузчик виртуальной машины. Процесс генерации машинного кода прост, байт-коды легко интерпретируются и исполняются " на лету". Сильного замедления не происходит также благодаря весьма разумному изначальному кодированию, в результате которого работа с базовыми классами оказалась встроенной в байт-код, и оптимизации, которая производится как на этапе генерации байт-кода, так и перед непосредственным исполнением на конкретной машине.

Многопоточность. В языке Java предусмотрены механизмы создания так называемых легковесных параллельных процессов (threads), которые могут работать в режиме квантования времени, используя синхронизацию на основе мониторов Хоара. )

Вопрос: Как решается проблема со скоростью работы программы?

Ответ: Элементарно. За счет слова JIT (Just In Time).

Идея следующая: Вот виртуальная машина прочитала байт-код, поняла, выполнила. Она может закэшировать результат работы, чтобы потом второй раз она этот код просто выполнила? Может. Результат кэшируется. Если вы какой-то метод вызываете сотый раз, то может быть на первом разе это была интерпретация, а дальше пойдет работа JIT.

А вот теперь смотрите. Здесь если один важный и тонкий момент. Виртуальная машина пишется отдельно для каждой платформы, где присутствует JIT-компилятор. Поэтому на каждой платформе, если найдется время у Oracle, они смогут написать очень эффективный JIT, который из этой платформы выжмет максимум производительности. Вот вы когда на C/C++ пишете код, то вы его компилируете в машинный код у себя на машине разработчика. Вы учитываете, какая будет у вас машина, на который вы будете устанавливать этот код? Чаще всего вы это не учитываете, т. к. вы генерируете какой-то усредненный набор инструкций. А здесь? Здесь JIT может сгенерировать родной код, если Oracle приложит усилия.

Литература:

  • Производительность кода на Java – там рассказывается, какие есть режимы работы JIT, как их можно переключать, какие есть дополнительные ключи у виртуальной машины, которые вам позволят сделать так, чтобы больше/меньше памяти использовалось. По-моему, в 8 версии JIT работает по умолчанию следующим образом: программа начинает работать, она использует байт-код и интерпретацию. Собирает статистику. Какие методы вызываются и сколько раз. После этого все кэшируется с помощью JIT окончательный код только для тех методов, которые вызываются часто, постоянно и так далее.
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...