@P747

Java на уровне железа, отличия от C++?

Добрый день!

Недавно начал изучать Java по книге "Java 8. Руководство для начинающих | Шилдт Герберт", в ней написано, цитирую:

Язык Java был задуман в 1991 году сотрудниками компании Sun Microsystems Джеймсом Гослинrом, Патриком Нотоном, Крисом Уортом, Эдом Фрэнком и Майком Шериданом. Первоначально он назывался Oak, но в 1995 году, когда за его продвижение на
рынке взядись маркетологи, он был переименован в Java. Как это ни удивительно, на
первых порах сами разработчики языка не ставили перед собой задач разработки интернет-приложений. Их целью бьuю создание платформенно-независимоrо языка, на
котором можно было бы писать встраиваемое программное обеспечение для различной
бытовой аппаратуры с микропроцессорным управлением, в том числе тостеров, микроволновых печей и пультов дистанционного управления. Как правило, в устройствах подобного типа применялись контроллеры на базе микропроцессоров различной архитектуры, а исполняемый код, генерируемый компиляторами большинства существовавших
в то время языков программирования, был ориентирован на определенные типы процессоров. Характерным тому примером может служить язык С++.


Создание компилятора С++, который вместо исполняемого кода генерировал бы байт-код, вполне возможно, но язык С++ обладает рядом свойств,
препятствующих его использованию для разработки интернет-приложений.
Самым важным из них является поддержка указателей. Указатель содержит
адрес некоторого объекта, находящегося в памяти. С помощью указателей
можно обращаться к ресурсам за пределами программы, что создает бреши в
системе безопасности. В Java указатели не поддерживаются, а следовательно, и
не возникает никаких осложнений, связанных с безопасностью.


Отсюда у меня возникли следующие вопросы:
1. Если Java банально не умеет обращается к адресам оперативной памяти, то каким образом он вообще может применяться или применялся в "железе"?
2. Какую нишу занимает и где применяется Java для приложений под Интернет, если в этой нише давно себя хорошо зарекомендовали PHP, Javascript и сторонние программы(Redis, Node.js, Sphinx и т.д.), написанные на C/C++, так же используемые и для построения HighLoad приложений?
  • Вопрос задан
  • 818 просмотров
Решения вопроса 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Авторы надеялись, что к железу можно будет обращаться с помощью абстракций - производитель железа у себя реализует java-машину, а уж сверху нее можно запускать прикладной код.

Вы забываете о большом пласте истории техники, который был сильно до этого - 8 битные домашние ЭВМ (десятки их) и язык Бейсик.

Так вот, ЭВМ того времени были катастрофически разными - разные носители (кассеты, дискеты, картриджи), разная аппаратура (засунуть еще один центральный процессор в дисковод? да нивапрос! разная скорость для PAL и NTSC версий - легко!). Но вот бейсик был везде и позволял, с некоторыми переделками, таскать программы с машины на машину.

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

Отчасти, это сработало на старых мобилках, в эпоху j2me - это как раз Java, засунутая в телефон - игры, браузеры, карты (были даже ЯндексКарты), читалки, чатилки - куча всего.

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

Сейчас апплет на java можно встретить во всяком старом железе, на нем там сделано GUI для удаленного администрирования серверов, коммутаторов и СХД. Вы браузером заходите на железку, и тут на вас вываливается ворох предупреждений о том, что сейчас будет запущено какое-то ужасное дырявое ПО, держите штаны, а то слетят. Уверены? Точно уверены? А с этим согласны? А так?

А уже потом начали активно применять JavaScript, главным образом, изобретя Ajax - продолжая люто натягивать сову (систему для создания электронных библиотек для ученых/HTML) на глобус (задачу создания интерактивного гуя с красивой версткой).

И это вы еще бэк на Perle не рефакторили
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы