Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Getting started...


Автор: x77 17.4.2002, 13:07
Итак. Абстрагируемся от всего, что я писал ранее (хотя как ты предполагаешь засунуть джавовский апплет на страничку и просмотреть её без запущенного httpd для меня загадка). Будем исходить из того, что есть линух RH 7.2 отконфигуррованный в качестве веб-сервера и на нём требуется уложить страничку с апплетом, отображающим "Hello, world!" для любого подключающегося клиента. Как проверить, стоит ли на машине компилятор java, как его настроить (и надо ли?) и как писать и компилировать программу?

Автор: BearBeer 17.4.2002, 14:00
:)
Ок. Вечером распишу пордробно.

Автор: x77 17.4.2002, 14:04
ждём-с :)

Автор: x77 17.4.2002, 14:06
Кстати, было бы неплохо убрать возможность незарегистрированным пользователям писать сообщения под никами зарегестрированных.

Автор: BearBeer 17.4.2002, 15:55
Последнее сообсчение - в раздел обсуждения форума.

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

Сорьки, сежчас много внимания уделить не могу - на работе :)

Есче один ПС - я сразу не вьехал, что апплет пишеш :) В основном специализируюсь на приложениях - поетому и зациклился.
Вообсчем пиши - а "стулья" вечером...
:D  :D  :D

Автор: x77 17.4.2002, 17:49
Мне бы хотелось начинать с нуля, тем более, что с джавой я раньше вообще не работал. Но допустим, засунул я в редактор

Код

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


сказал:
 javac HelloWorld.java
 chmod 755 HelowWorld.class

а дальше что? Как это запихать в страницу?

Автор: BearBeer 17.4.2002, 21:12
Код

import java.applet.Applet;
import java.awt.Graphics;

public class HellOfWorld extends Applet {
   public void paint(Graphics g) {
       g.drawString("#### of world!", 50, 25);
   }


Так будет правильней. Обьясню.

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

Далее обязательно надо давать определение extends. Это как в плюсах, что указать, что твой класс наследует, все свойства класса Апплет (я иногда буду писать по русски в понятных местах, так как долго переключаться на английский - что непонятно - пытай ;) ).

Идем дальше.
Каждый апплет должнен имплементировать один из методов (методов в Джаве называется то, что в С++ - функция, это так, на хлопский ум :) ):

init, start и paint

кроме того апплеты могут имплементировать: stop и destroy, когда происходит одно из событий типа закрытия браузера или перехода на другую страницу.
Конечно же любой другой метод тоже можно засунуть, но эти основные и обязательны.

Это для начала про код.
Теперь проанализируем твой. Чего не хватает?
Правильно - импорта библиотек.
Остальной код впринципе отражает Джава-приложение, а не Джава-апплет.

Обьявление стандартного класса, стандартной статической функции мейн,  с набором строковых аргументотв, котоорые будут считываться с клавиатуры при запуске из консоли как параметры класса. Необязательны.
Далее вывод текста осуществляется через консоль. System.out (System.in) - классы для работы с потоками ввода-вывода через сандартное устройство. Так же как в С++ cin и cout.

То есть. Твою программу можно запустить из консоли, добавив первой строкой, например:

import java.*;
Должноо работать.

Продолжнение следует...

Автор: BearBeer 17.4.2002, 21:24
Теперь отвечаю на второй вопрос:

Как это все удовольствие запихать в Веб-страницу?

Ну во-первых, надо скомпилировать.
javac HellOfWorld.java

У нас получился милый прекомпилированый файл с именем
HellOfWorld.class

Это байт-коды для виртуальной машины, которая установлена на системе, где будет запускаться апплет.
Тут я сделаю отсупление и кое-что обьясню (я планировал сделать это позже, но будет полезно и тут). Апплет запускается на стотроне клиента. Абсолютно не имеет значение на чем тот сидит: На виндах, Линуксе, Компаке или другой платформе. Если у него установлена виртуальная Джава машина - она сама переведет байт-коды класса в коды понятные даннойплатформе. Именно в применении этой машины и есть реализация мультиплатформенности Джава. Разработчик пишет один код, не думая о той платформе, где будет запускаться скомпилированный класс.
Это верно как для апплетов, так и для джава-приложений.

Вернемся теперь к нашему классу.
Чтоб поставить его в веб-страничку используется стандартный тег:
<APPLET>

Выглядеть это будет так:
Код

<HTML>
<HEAD>
<TITLE> A Simple Program </TITLE>
</HEAD>
<BODY>

Here is the output of my program:
<APPLET CODE="HellOfWorld.class" WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>

Автор: BearBeer 17.4.2002, 21:29
Вот спецификация тага апплет, хотя к этому еще рано, но скоре всего захочется поиграться:
Код

<APPLET CODE=AppletSubclass.class WIDTH=anInt HEIGHT=anInt>
<PARAM NAME=parameter1Name VALUE=aValue>
<PARAM NAME=parameter2Name VALUE=anotherValue>
</APPLET>


ПРимер использования:
Код

<APPLET CODE="Animator.class" WIDTH=460 HEIGHT=160>
<PARAM NAME="imageSource" VALUE="images/Beans">
<PARAM NAME="backgroundColor" VALUE="0xc0c0c0">
<PARAM NAME="endImage" VALUE=10>
<PARAM NAME="soundSource" VALUE="audio">
<PARAM NAME="soundtrack" VALUE="spacemusic.au">
<PARAM NAME="sounds"
   VALUE="1.au|2.au|3.au|4.au|5.au|6.au|7.au|8au|9.au|0.au">
<PARAM NAME="pause" VALUE=200>
. . .
</APPLET>



Это для того, чтоб была более понятна вся концепция реализации запуска апплета. Так как это не тема про ХТМЛ - то рассписывать не буду - будут вопросы - отвечу :)

Автор: BearBeer 17.4.2002, 21:44
Ну и пару замечаний.

Джава - мультиплатформена. Это значит, что любая документация по Джаве - действительна для разработчика под любой системой.

Далее, для того чтоб при компиляции, компилятор (калабурчик_с) находил все стандартные и подключаемые классы невредно прописать системную переменную CLASSPATH, uгде прописаны пути к каталогам, где лежат библиотечные файлы.

Удачи!!! Надеюсь, что теперь все получится.

Автор: Fantasist 22.4.2002, 18:22
Помниться, я слышал, что существует java, как его... типа run-time компилятор, или in-place компиляция - типа компиляции в исполняемый файл данной платформы из байт-кода, при первом запуске этого байт-кода. Ну так как есть такая вэщь? Хотя для апплетов это все равно безполезно.

Автор: BearBeer 22.4.2002, 22:47
Имеется ввиду JVM?
Java Virtual Machine? Этот можуль встроен во все пакеты Джава и является что ли сердцем. И есть основное "изобретение". Вы компилируете Свой код в классы, далее эти классы запускаются уже на JVM. А уже само по себе Виртуальная машина - платформозависима. И уже она переводит класс - в исполняемый код для данной платформы.

Без нее класс просто не запустится.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)