Что именно является Java? - PullRequest
13 голосов
/ 12 ноября 2010

Вопрос на первый взгляд может показаться глупым, но, возможно, это не так.

  • Java не является языком Java, большинство людей знают об этом, поскольку вы можете программировать Java с множеством других языков , таких как Scala или Groovy

  • Java не является конкретной реализацией виртуальной машины, поскольку существуют другие реализации, не только SUN, Microsoft или IBM.

  • Java не является структурой классов, поскольку многие реализации добавляют или исключают классы по своему желанию.

  • Нет необходимости использовать общую спецификацию VM или даже байт-код Java, см. Dalvik VM

  • Может быть, это просто набор принципов, которые они разделяют, что бы это ни было. Это определенно не «Пиши один раз, беги везде», поскольку это не относится, по крайней мере, к Dalvik и Microsoft VM / J #.

Итак, вопрос в том, что такое Java? Есть ли точное определение?

EDIT Многие люди, похоже, считают, что java означает только язык программирования. Таким образом, мобильный телефон с поддержкой Java должен быть телефоном, который позволяет пользователю использовать программы, состоящие из файлов классов, созданных только на языке Java. Если это так, то среда разработки java-виртуальной машины / среды выполнения java / java будет создана только для java, а другие языки jvm будут иметь свои собственные соответствующие xvm / xre / xdk.

Ответы [ 7 ]

39 голосов
/ 12 ноября 2010

Java - это язык Java, на самом деле.Groovy, Scala и другие компилируются в эквивалентный байт-код, который может работать на JVM, но они не Java.

Формально я бы сказал, что Javaэто JLS .

6 голосов
/ 12 ноября 2010

Java - это язык программирования. Синтаксическая часть.

5 голосов
/ 12 ноября 2010

Строго говоря, Java - это просто язык программирования.Но это язык программирования, который включает в себя множество стандартов: например, множество спецификаций API и JVM.Вот почему SUN и другие называют его платформой.

Другими языками, такими как Scala, Ruby и т. Д., Являются , а не Java, они просто компилируются в байт-код, который выполняется на виртуальной машине Java.,Они просто основаны на платформе Java, но сами не являются Java.

JVM очень стандартизирована, и многие компании могут и действительно предлагают свои собственные реализации для своих аппаратных платформ.Это также не Java, это всего лишь реализации части платформы Java.

Спецификация Java VM на 100% стандартизирована, что обеспечивается Oracle, поскольку они требуют авторского права на Java.Вот почему Android (Dalvik VM) в настоящее время является предметом судебного разбирательства Oracle против Google.

5 голосов
/ 12 ноября 2010

По моему это язык.Я не думаю, что люди говорят, что они программируют на Java с помощью Groovy, или, если они это делают, они ошибаются.

3 голосов
/ 12 ноября 2010

На самом деле, это зависит от контекста, в котором используется слово.Это все: синтаксис, технология, фреймворк, язык программирования.

Как свидетельство, Oracle отвечает на этот вопрос следующим образом: Что такое Java?

2 голосов
/ 14 ноября 2010

Вы не можете сказать, что Scala - это Java, так же, как вы не можете сказать, что вилка - это расческа, просто потому, что вы чистите ею волосы. Или, если я приведу классическую аналогию, забивание гвоздей с помощью гаечного ключа не делает его молотком.

Вы можете создать компилятор, который компилирует COBOL в C ++, если хотите, но это не значит, что COBOL - это C ++.

Многие языки имеют машинный код x86 в качестве целевого скомпилированного языка, так значит ли это, что они все одно и то же?

Не имеет значения, могут ли другие языки компилироваться в байт-код JVM, равно как и то, что вы можете компилировать Java в машинный код конкретной архитектуры. JVM по-прежнему является платформой Java; другие языки просто делятся этим, и Java может скомпилироваться с целями, отличными от байт-кода JVM. Точно так же, как вилка может просто расчесывать ваши волосы в зависимости от того, как вы с ними справляетесь.

Я думаю, что это глупый вопрос (и к тому же он не имеет ничего общего с программированием). Возможно ли, чтобы кто-то действовал как философ эпохи Возрождения и пытался доказать, что ваша вилка на самом деле является расческой, потому что вы никогда не использовали ее в качестве вилки и всегда использовали ее только в своих волосах? Конечно, продолжайте и спорьте, и, возможно, у вас даже будет смысл, но, надеюсь, никто не тратит свое время на его прослушивание. Это всего лишь игра в семантику, и как только вы начинаете спорить о семантике, все проигрывают.

(изменить) Ба! Я только что понял, что спорю о семантике!

1 голос
/ 12 ноября 2010

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

Существуют также юридические определения того, что можно назвать Java (например, товарный знак), но я думаю, что «Я собираюсь оставить этого в покое на данный момент: -)

...