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)

Facepalm, кто-то гуглить не умеет

javac mainjava.java
java mainjava

Нужен jar — собираешь jar утилитой jar из fastjar

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)

я бы сделал так:

$ java -cp luaj-3.0/lib/luaj-jse-3.0.jar lua -e 'print("Hello, world!")'
user_id_68054 ★★★★★
()
package ru.example.helloworld;

/**
 * Hello world class
 */
public class HelloWorld {
    public static void main(String args[]) {
        System.out.println("Hello, world!");
    }
}
Deathstalker ★★★★★
()
Ответ на: комментарий от anonymous

Ага, именно. И ещё сам код.

Кстати, нашёл уже:

public class HelloWorld {
  public static void main(String[] args) { System.out.println("Hello World!"); }
}

Ну, в общем, не сильно сложнее Си-шного подхода, даже не ожидал.

Сейчас попробую скомпилировать :)

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

Это статический метод, конструктор выглядит иначе и служит для другого.

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

а зачем вся эта возня с java-машиной и jit, если всё равно собирать приходится

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

Плюсую этого господина.

Немного времени и дело в шляпе :)

Twissel ★★★★★
()

Ура, получилось!!

drvtiny@drvtiny-ot-pc00:~/tmp/Java$ time java  -classpath bin HelloWorld
Hello World!

real	0m0.073s
user	0m0.069s
sys	0m0.004s
drvtiny@drvtiny-ot-pc00:~/tmp/Java$ time perl -e 'print "Hello, world!\n"'
Hello, world!

real	0m0.002s
user	0m0.000s
sys	0m0.002s

DRVTiny ★★★★★
() автор топика
$ cat > Hello.java <<EOF
> public class Hello {
>     public static void main(String... args) {
>         System.out.println("Hello, World!");
>     }
> }
$ javac Hello.java 
$ java Hello
Hello, World!
Legioner ★★★★★
()
Ответ на: комментарий от Legioner

СПАСИБО!

Отличный ответ, именно то, что я и хотел узнать!

DRVTiny ★★★★★
() автор топика

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

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

Тогда уж

echo -e "public class Hello {public static void main(String... args) {System.out.println(\"Hello, World\");}}" > Hello.java && javac Hello.java && java Hello

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

Я как бы в последнюю очередь стремлюсь работать Java-программистом, да. Да и в общем мне никому ничего доказывать не нужно - что умею, то умею хорошо, а чего не умею, но надо уметь - научусь. А сейчас так просто, балуюсь. Мне на самом деле нужно скомпилировать тесты из Selenium IDE.

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

но надо уметь - научусь

По данному треду и видно, каким образом ты учишься.

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

Вынужден тебя огорчить: с таким подходом ты ничего сложнее хелловорлда и «3+4» на Джаве не напишешь ибо Classes Library.

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

Хороший тред

А мне кажется, что на сложные вопросы на форумах нереально ответ получить. Вот спросил я тут как-то про H.264, а смысл? Всё равно ответ сам нашёл; месяц почти прошёл.

i-rinat ★★★★★
()
Ответ на: комментарий от Stil

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

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

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

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

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

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

медленнее интерпретатора куда более сложного в синтаксическом плане языка Perl.

Который, в свою очередь, бесконечно медленнее bash'а:

$ time echo "Hello, world!"
Hello, world!

real	0m0.000s
user	0m0.000s
sys	0m0.000s

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

медленнее интерпретатора куда более сложного в синтаксическом плане языка Perl.

Который, в свою очередь, бесконечно медленнее bash'а:

Java не нужна! Bash FTW!

хотя правильнее было бы

time bash -c "echo hello world"
hello world

real    0m0.002s
user    0m0.001s
sys     0m0.000s
Stil ★★★★★
()
Последнее исправление: Stil (всего исправлений: 1)

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

Спасибо. Меня тоже давно мучал этот вопрос, а спросить на форуме стеснялся.

router ★★★★★
()

Hello.java

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
$ gcj Hello.java --main=Hello -o hello_world
$ time ./hello_world
Hello, World!

real    0m0.014s
user    0m0.010s
sys     0m0.000s
$ javac Hello.java
$ time java Hello
Hello, World!

real    0m0.044s
user    0m0.040s
sys     0m0.000s

TheAnonymous ★★★★★
()

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

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

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

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

Зачем так сложно?

λ> echo '#include <stdio.h>\n int main(void) { puts("Hello, World!"); return 0;}' |gcc -x c - && ./a.out

Deleted
()

Я не дурной, и это не провокация

серьезно?

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

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

А теперь запусти его второй и третий раз и удивись.

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

уибирай:

public class JavaEtoNekulturno{
	static{
		System.out.println("Hello World! from class");
	}
	{
		System.out.println("Hello World! from Object");
	}
        public static void main(String[] ArgementsWTF){new JavaEtoNekulturno();}
}

qulinxao ★★☆
()
Ответ на: комментарий от DRVTiny
$ time ./a.out 
Hello, World!

real    0m0.001s
user    0m0.000s
sys     0m0.001s
$ time lua -e 'print("Hello, World!")'
Hello, World!

real    0m0.001s
user    0m0.000s
sys     0m0.000s

Lua таки быстрее этой вашей сишечки.

А вот хелловорлд на асме:

section     .text
global      _start

_start:

    mov     edx,len
    mov     ecx,msg
    mov     ebx,1
    mov     eax,4
    int     0x80

    mov     eax,1
    int     0x80

section     .data

msg     db  'Hello, world!',0xa
len     equ $ - msg

$ time ./helloasm
Hello, world!

real    0m0.000s
user    0m0.000s
sys     0m0.000s
Unicode4all ★★★★★
()
Ответ на: комментарий от qulinxao

а на so тоже отмолчались?

Я больше нигде не спрашивал.

i-rinat ★★★★★
()
Ответ на: комментарий от vurdalak

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

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

Восклицательный знак тупой лорпарсер выкинул из ссылки.

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