Java и о всё о ней [закрыт]

265
27 марта 2019, 12:00

Читаю документацию Java, перевожу, созрели вот такие вопросы:

  1. Почему Java язык высокого уровня и как это понять, высокий уровень?

Дальше в документации пишется:

это язык высокого уровня, который может характеризоваться следующими ключевыми словами:

  • Simple (простой)
  • Object oriented (Объектно-ориентированный)
  • Distributed (Распределенный)
  • Multithreaded (Многопоточный)
  • Dynamic (Динамический)
  • Architecture neutral (Архитектура нейтральная)
  • Portable (Портативный) - Переносный
  • High performance (Высокая производительность)
  • Robust (Переводится как крепкий, но я думаю надежный)
  • Secure (Безопасный)
  1. Почему простой? В чём проявляется простота?
  2. Объектно-ориентированный (понятно)
  3. Распределенный, вообще не понятно.
  4. Многопоточный (есть слабое понимание)
  5. Динамический? Так Java же строго типизированный язык?
  6. Архитектура нейтральная - как это понимать?
  7. Портативный - То что можно написать программу и она будет работать на windows, unix, macoS, да?
  8. Высокая производительность? Как понять у какого языка высокая производительность? Как я знаю в Java высокая производительность достигается тем, что код транслируется в байт-код (поправьте если неправильно)
  9. Надежный? Другие языки программирования ненадёжные? В чем проявляется надежность?
  10. Безопасный? В чем проявляется? А другие языки небезопасные?
Answer 1
  1. Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
  2. Просто попробуйте разработать что-нибудь более-менее серьёзное на C++ и этот вопрос отпадёт.
  3. Хорошо, что самая сложная часть понятна.
  4. Java изначально создавалась для разработки распределённых систем (то есть работающих сразу на нескольких серверах). В ней эти задачи получаются легче и проще, чем во многих других языках.
  5. Грубо говоря, ваша программа может выполнять сразу множество действий одновременно. В некоторых языках этого либо вообще нельзя добиться, либо с ограничениями.
  6. Без контекста сложно сказать, что имели ввиду авторы. Вероятно, рефлексию.
  7. Это значит, что ваша программа без перекомпиляции будет работать как на 32-битных процессорах ARM, так и на 64-битных процессорах Intel. И на множестве других.
  8. Да.
  9. Это значит, что не смотря на компиляцию в байт-код, а не машинный код, производительность программ не сильно снижается.
  10. А теперь посоветую начать писать что-нибудь более-менее серьёзное на C. Первые лет 5 ваши программы будут сами по себе падать в segmentation fault из-за того, что вы провели неправильную операцию с указателем или не освободили память. Вероятно, повреждая при этом данные. А потом кто-нибудь ещё и напишет эксплойт, который будет эксплуатировать ошибку переполнения стека в вашей программе, позволяющую выполнить произвольный код злоумышленника в вашей системе. Java спроектирована так, чтобы не давать программисту совершать ошибки, на сколько это возможно.
  11. Программы на Java работает в изолированном окружении виртуальной машины и не могут навредить системе.
Answer 2

Языки высокого уровня создаются для удобства программистов, в них вся логика удобна для человека, не нужно все запоминать в машинных кодах, как в самом известном языке низкого уровня - ассемблере.

Про безопасность Java подробно расписано здесь.

READ ALSO
Контейнеры Java

Контейнеры Java

программисты! Пытаюсь разобраться с контейнерамиПрограмма, используя метод add добавляет в массив из строк(изначально n=0 по размерности) заданное...

245
JavaFX - изменение текста в treeview

JavaFX - изменение текста в treeview

Есть дерево с какими-то элементамиЯ хочу, чтобы по нажатию на кнопку было можно изменить текст в выбранной ячейке

177
Android NDK live wallpaper preview

Android NDK live wallpaper preview

Хочу написать простой движек для обоев, с использованием NDKOpengl контекст управляется и создается на стороне Java, но рендеринг посредством JNI осуществляется...

207