LINUX.ORG.RU

Как на Java сказать «Hello, world!» ?

 ,


3

3

Как-то вдруг заинтересовался этой темой.

Вот у меня есть /usr/bin/java, есть некий код, который делает System.out.println(«Hello, world!»);

Ну то есть мне ничего от него пока что больше и не нужно. Сам код готов написать с помощью конструкции «документ здесь» (cat <<EOF) или даже настоящего echo -e!

Для «самого сложного» языка программирования - Си, это делается так:

1) Пишем код в 4 строчки

2) Компилируем код с помощью gcc в объектный файл

3) Комплируем объектный файл в elf

А как это происходит в случае с Java?

Мне неоднократно доводилось слышать что вроде как Java - это простой язык и там почти совсем нет ничего лишнего. Вот мне по существу нужно увидеть на консоли «Hello, world!», что для этого требуется сделать?

P.S. Просьба установку Eclipse, IntelliJ IDEA и прочей подобной мути не предлагать - нужно сделать с использованием только java runtime и java compiler.

P.P.S Я не дурной, и это не провокация: если вы поищете в Google, то найдёте исключительно примеры Hello, world'ов на Java, созданные в каких-то феерических IDE.

★★★★★

Последнее исправление: DRVTiny (всего исправлений: 2)
Ответ на: комментарий от Unicode4all

А это nasm или какой-то другой? Выглядит здорово, почти как старый-добрый MASM. Хотя в MASM'е я макросы под конец процентов на 50 использовал: половина кода писалась руками, половина - генерировалась по параметрам «процедурками» на MASM'е

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

ИМХО, гугл перестраивает поиск динамически. Мне почему-то вывалилась книжка Фроловых и что-то там про Eclipse.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu

Хотел сказать, что в 36.5 раз медленнее Perl'а. Как выясняется, примерно в 73 раза медленнее, чем Си

Ну и да, я запускал много раз скомплированный код - быстрее почему-то не стало. Возможно, из-за того, что java-runtime и без того уже давным-давно весь в памяти (это как бы не единственное java-приложение, которое я запустил).

DRVTiny ★★★★★
() автор топика
Последнее исправление: DRVTiny (всего исправлений: 1)
Ответ на: комментарий от DRVTiny

Хотел сказать, что в 36.5 раз медленнее Perl'а. Как выясняется, примерно в 73 раза медленнее, чем Си

Дело не в скорости выполнения, совсем нет.

Много ты сейчас промышленного кода на Perl видел?

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

А что такое «промышленный код»? Уверяю, что в промышленности, которая сшила твои брюки и произвела твой компьютер с клавиатурой, не используется Java.

Если же говорить об энтепрайзе - там Java потому что крупные производители ПО сделали под разработку на Java т.н. Application Server'ы. При этом их собственные, как бы мегаценные для бизнеса приложения (всякий бизнес интеллидженс) работает на этих же платформах.

Случай абсолютно аналогичный анальной зависимости от 1C: Предприятие, Oracle WebLogic, MS Dynamics CRM и пр. Как бы ни было тошнотворно писать код под 1С, каким бы ни был отстоем 1С, но под него пишет код куча народа. Потому что разработку/поддержку ПО такого масштаба ведёт только 1С.

Так же и с Java: крупнейшие игроки рынка предлагают бизнес-платформы на Java. А поскольку платформа - не готовое ПО под конкретного заказчика, а всего лишь инструмент, то таки да, Java-разработчики нужны как воздух. Но это не говорит ни разу о качестве языка. Это говорит только о том, что несколько крупнейших корпораций в какой-то момент сильно полюбили Java, поскольку как минимум 2 из них (IBM и ex.-Sun, а ныне Oracle) приложили руку к созданию языка в современном виде на 90%.

Java - это язык IBM и язык Oracle. И пока эти 2 корпорации предлагают лучшее ПО для крупного тырпрайза - никто, в том числе и мелкий тырпрайз, лижущий жопы крупному тырпрайзу, от Java отказаться не сможет. Тчк.

DRVTiny ★★★★★
() автор топика
Последнее исправление: DRVTiny (всего исправлений: 2)
Ответ на: комментарий от LongLiveUbuntu

Кстати, отечественные телеком-компании используют весьма сложное ПО на Perl и в хвост, и в гриву.

Mail.ru - тонны кода на Perl.

Booking.com - ну, все в курсе.

И таки да, если твой заказчик любит Nagios или OTRS, то в общем придётся любить Perl.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

Зато сейчас у меня на самые разные запросы о Java приходят первыми одни и те же ссылки на программы, компилируемые авторами статей в javac... Приехали называется :( Хорошо, что хоть не армянами компилируемые - я ещё о Ереване инфу ищу.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Он самый. Он как раз создавался под влиянием masm'а с tasm'ом. даже язык макросов схож, хотя есть различия. А так, NASM — единственный вменяемый ассемблер под онтопиком.

Unicode4all ★★★★★
()
Ответ на: комментарий от Unicode4all

Вы меня морально убили. Хочу теперь программить под nasm :(

Меня от этого «отвращает» только понимание того, что современный эффективный код на ассемблере - это отличное знание инструкций процессора куда современнее, чем даже SSE2. А они после старого-доброго ассемблера для i386 в геометрической прогрессии становились вся ужаснее, монструознее и бесчеловечнее.

Старый ассемблер типа того, на котором Вы привели пример, был настолько прост и прямолинеен (кроме не всегда очевидного механизма флагов), что после него тот же Си казался заумью.

MMX-инструкции по сути продолжали традиции старого-доброго Intel Assembler'а, мне они очень нравились.

А вот после SSE начался такой дикий трэш, что желание «пусть этот кошмар за меня пишет компилятор» усиливалось в геометрической прогрессии.

Всё-таки в ассемблере принцип KISS - золотой, а Intel с его раздутой до масштабов «маленького языка R внутри процессора» CISC-архитектурой сделал из процессора сильно распараллеленный компилятор заковыристого языка программирования.

Хорошо хоть совместимость со «старым» ассемблером осталась. Вот только если писать на нём и только на нём, получится код более медленный, чем тот, который сгенерирует gcc в оптимизациями по -march

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Есть ARM, но, я думаю, его постигнет та же судьба, что и х86. А так, хотя бы just for fun можно и на старом добром x86 (даже x86-64) покодить. А NASM, к сожалению не поддерживает ARM.

Unicode4all ★★★★★
()

DRVTiny, признайся честно, ты тролль?

bbk123 ★★★★★
()
Ответ на: комментарий от DRVTiny

Скорость запуска — полная фигня. Java сама по себе работает быстрее перла, просто у перла менее жирный рантайм.

Что, собственно, логично, потому что перл создан для того, чтобы умирать (после короткой работы), а java — для долгой жизни в виде демонов.

Аналогичный пример: напиши на перле веб-сервер, отвечающий на запросы хеллоу-ворлдом и сравни с таким веб-сервером на java.

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 2)
Ответ на: комментарий от DRVTiny

И пока эти 2 корпорации предлагают лучшее ПО для крупного тырпрайза - никто, в том числе и мелкий тырпрайз, лижущий жопы крупному тырпрайзу, от Java отказаться не сможет. Тчк.

Зачем ему отказываться от Java и причем тут лизание задниц? Даже без учета крупного ПО для тырпрайза она для таких целей подходит лучше всего.

derlafff ★★★★★
()
Ответ на: комментарий от derlafff

Потому что лучше? Или всего?

Может, прекратим глумиться над здравым смыслом и признаем: за что платят - то и лучше. А почему лучше - вопрос десятый.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Потому что лучше? Или всего?

Что-что? Не распарсил.

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

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

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

Или на чем ты это предлагаешь писать?

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 2)
Ответ на: комментарий от derlafff

Ага, Вас в гугле забанили :)

perl -MHTTP::Server::Brick -e '$s=HTTP::Server::Brick->new(port=>8080); $s->mount("/"=>{path=>"/tmp"}); $s->start'

Экспортирует весь /tmp как корневой каталог веб-сервера.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от derlafff

Лучше то, что обкатано, стабильнее

Стабильнее то, что написано прямыми руками и тщательно протестировано. Это вообще не свойство языка.

Хотя у Java-программистов эти их стек-трейсы - какой-то анальный бич. Я не знаю тырпрайзных программ на Java, которые бы умели просто и понятно выводить сообщение об ошибке в лог. Мне кажется, что это из-за некоторых нехороших свойств Java с её индусской объектно-ориентированностью, когда на 10 строк функционального кода приходится 1000 строк декларативного говна, связывающего воедино объектные испражнения 10-ти одинаково криворуких программистов.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Вас в гугле забанили :)

Я и не пытался этого искать, и не собирался этого делать. Я предложил измерить производительность.

И вообще, посмотри на ОП-пост, это тебя вроде как там забанили

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 2)
Ответ на: комментарий от DRVTiny

Мне кажется, что это из-за некоторых нехороших свойств Java с её индусской объектно-ориентированностью, когда на 10 строк функционального кода приходится 1000 строк декларативного говна, связывающего воедино объектные испражнения 10-ти одинаково криворуких программистов.

Однако, когда у тебя количество функционального кода начинает исчисляться миллионами, количество декларативного говна сильно не возрастает. Зато дает другие ништяки, которых без этого декларативного говна не добиться.

Хороший пример: посмотри пример на типичного perl/php/... форума и посмотри на исходники ЛОРа.

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 3)
Ответ на: комментарий от DRVTiny
elemashine@laptop:~ > time echo -e 'Hello, World!'
Hello, World!

real    0m0.000s
user    0m0.000s
sys     0m0.000s
minakov ★★★★★
()
Последнее исправление: minakov (всего исправлений: 1)
Ответ на: комментарий от derlafff

Однако, когда у тебя количество функционального кода начинает исчисляться миллионами

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

Хороший код, не индусский классический, компактен. И чем больше проект по объёму, тем лучше видна разница между качественным кодом и халтурой: иногда в десятки раз, а то и в сотни.

Ну и да, форумный движок объёмом в миллионы строк - что-то здесь не то...

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от derlafff

Или на чем ты это предлагаешь писать?

На хаскеле Clojure жи.

Unicode4all ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.