Сакате да научите како да правите динамични сајтови? Секако за тоа има повеќе опции, некои од попопуларните се ASP, PHP и други скрипт-базирани јазици. Друга опција е Java. Да, верувам дека сите знаеме дека Java стартуваше за креирање на Web аплети и апликации независни од платформата, но во минатите неколку години улогата на Java се прошири и оддамна веќе може да се креираат серверски веб апликации. Секако може и да се забележи колкаво е побарувањето од компаниите за програмери кои го совладале програмирањето за серверски веб апликации. Твоите први чекори кон додавањето на овие вештини во твоето CV би требало да бидат разбирањето на Java програмскиот јазик во глобала.

Ова е прв од серијата написи кои ќе те научат да го користиш Java програмскиот јазик преку поглед на можностите и техниките кои ќе ти овозможат да креираш динамични веб сајтови и апликации. Поточно, откако ќе направиме сумирање на основите на програмкиот јазик и на објектно оријентираните концепти на програмирање кои ќе ти бидат потребни за да можеш ефективно да го искористиш програмскиот јазик Јава. Понатака ќе преминеме кон Јава сервлети и Јава серверски страни (JavaServer pages, JSP), двете технологии кои се користат за креирање на динамични веб сајтови со користење на бази на податоци. Во меѓувреме ќе се запознаеме и со други поврзни технологии како Java Database Connectivity (JDBC), MySql (менаџер за бази на податоци). Но пред да забегам во опишување на нештата за кои допрва ќе се пишува ајде да започнеме со основите на Јава програмскиот јазик.

Што е Јава?

Јава е програмски јазик кој ги нуди сите можности како и C/C++, но полесен и поконзервативно структуиран. Како и C++ и Јава е објектно ориентиран програмски јазик (коцептот за објектно оријентирано програмирање ќе го објасниме во понатамошните написи). Во основа Јава програмите се пишуваат со креирање на структирани групи на софтверски компоненти кои комуницираат меѓу себе за да продуцираат посакуван резултат. Овие компоненти се нарекуваат „објекти“ и основна задача на Јава девелопер-от е да ја открие најдобрата структура на објекти за да добие систем кој ќе работи како што се бара, да биде максимално ефективен, и секаде каде што е можно да се креираат компоненти кои ќе можат да бидат искористени во слични апликации.

Јава програмите наместо да се извршуваат директно на оперативниот систем кој е инсталиран на компјутерот, се извршуват во Јава виртуелна машина (Java Virtual Machine или JVM), кој сам по себе е програм кој се извршува на оперативниот систем на компјутерот. Откако продукцијата на Јава виртуелни машини е стандардизирана некомпатибилностите на различни оперативни системи се минимални. Теоретски ова значи дека било кој оперативен систем каде има инсталирано ЈВМ (Јава виртуелна машина), а скоро секој веќе има, може да изврши Јава програма и тоа без потреба да програмот биде рекомпајлиран за секоја платформа (оперативен систем) посебно. Ова и носи огромна предност на Јава-та, бидејќи е воспоставен систем на „напиши еднаш, извршувај секаде“ (Write Once, Run Anywhere = WORA). Тоа носи и мани, бидејќи Јава програмите се извршуваат поспоро поради тоа што виртуелната машина треба да ги конвертира Јава инструкциите и да ги испрати до оперативниот систем на кој таа се извршува.

Веб прелистувачите од последните генерации истот така може да „извршуваат“ Јава програми кои се превземени од интернет, без разлика дали ги извршуваат со вградената Јава вируелна машина (како во Interenet Explorer-от или Netscape 4) или со користење на ВМ-то инсталирано на оперативниот систем (како Firefox, Opera итн.) Јава програмите дизајнирани да работат во веб прелистувач се викаат Јава Аплети (Java Applets). Кога Јава беше јавно пуштена во употреба, главен акцент беше ставен на овие мали програми кои можат да се извршуваат во веб прелистувачи. Со текот на годините фокусот се префрли кон серверските апликации, а Јава аплетите се заменија со други технологии како динамичен HTML и Flash. Во денешно време Јава аплетите се користат при креирање на веб базирани програми за комуникација (chat) или за он-лајн игри.

 

Почетни чекори со Java

Што треба за почеток?

Се што ти треба за да почнеш да развиваш Јава програми слободно може да се превземе од веб сајтот на Java Sun, односно на
www.javasoft.com. Првиот и основен пакет кој че ти треба е „Java 2 Software Development Kit (SDK)“ Standard Edition. SDK-то ги содржи алатките за развој на Јава програми и Java Runtime Environment (JRE) за извршување на Јава програмите. JRE-то ја вклучува и виртуелната машина и уште неколку датотеки за поддршка. За разлика од Јава аплетите кои можат да се извршуваат со ЈВМ која е вградена во веб прелистувачот за извршување на други програми мора да се има инсталирана извршната околина на Јава (JRE), која исто така може и посебно да се првземе. Исто така ќе ти се најде при рака и копија од  Јава 2 документацијата, па затоа може да го превземеш и тој пакет бидејќи е од одлична помош за вградените функционалности кои Јава ти ги нуди. Откако ќе ги поминеш основите и ќе  навлезеш во Јава програмскиот јазик пакетот со документацијата ќе ти биде најдобар пријател (покрај Јава-та).

Детални инструкции за инсталација се обезбедени со самите пакети и препорачувам до истите да се држиш од збор до збор. Многу луѓе кои ја инсталираа верзијата за Windows едноставно го превземаат и инсталираат пакето, не внимавајќи да ги завршат и останатите задачи за подесување на критичните системски променливи кои овозможуваат Јава-та да функионира правилно. Единствен пропуст во обезбедената инсталација е метода за додавање/модифицирање на системските променливи во Windows ME i Windows 2000. Начините кои се опишани при инсталацијата работат за Windows 95/98/NT, но на Windows МЕ мора да се оди преку Start->Run, да се искуца msconfig и да се кликне ОК за да се стартува Windows ME алатката за конфигурација на системот, а променливите се наоѓаат во „Environment“ табот (или „јазичето“, како е полесно). На Window 2000 е скоро исто. Откако ќе се старува системскиот контролен панел (System Control Panel) на табот (јазичето) Advanced треба да се кликне копчето Environment Variables, а понатака се продолжува според инструкциите.

За да провериш дали Јава SDK-то е правилно инсталирано на твојот компјутер отвори команден промпт (Command prompt или MS-DOS Command Prompt за Windows или XTerm доклку користите Linux). Пробајте ги двете подолунаведени команди. Ако добиете сличен излез, спремни сте за Јава. Доколку оперативниот систем не ги препознава командите тогаш можеби морате да го рестартирате системот за да системските променливи бидат детектирани и вчитани.


C:\> java –version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

C:\> javac
Usage: javac
where possible options include:
 ...lista na opcii...



Сега откако го имате инсталирано SDK-то (и, опционо, документацијата) спремен си за да го напишеш твојот прв Јава програм. Но, пред да продолжиш, дозволи да кажам збор два и за инегрираните развојни околини (Integrated Development Environments-IDE). Сигурно веќе имаш и чуено и видено за убавите и дотерани развојни околини, некои се комерцијални, некои се слободни за користење кои помагаат за развој на Јава апликации. Јасно е дека ти се повеќе од корисни на искусни програмери (јас користам Eclipse за моите проекти), сепак препорачувам да ти како почетник почнеш со користење на алатките кои се обезбедени со самото SDK-a.
Причините за тоа се што многу опции/можности добиени од интегрираните развојни околини, како Eclipse или другите се дизајнирани за да овозможат побрзи начини за да се завршат некои задачи. Проблемот е во тоа што доколку не го разбереш „подолгиот пат“ понатака тоа ќе влијае на твоето разбирање на импликациите кои доаѓаат со користењето на автоматизираните методи и начини на интегрираните развојни околини. За споредба, доколку треба да направиш некоја HTML страна, која е колоритна и со интересни ефекти изборот ќе ти биде некоја алатка за едитирање на текстуални датотеки (Notepad, UltraEdit и др.) или Dreamweaver. Со Dreamwaever ќе ја направиш страната релативно брзо и со екстра ефекти, бидејќи самиот Dreamweaver ќе го генерира HTML кодот во позадина (и  CSS и JavaScript), но доколку истото требаше да го направиш преку едиторот за текстуални датотеки, нема да можеше, бидејќи не ја познаваш позадината на тоа што се е потребно за да се изведат тие ефекти, и што во позадина прават автоматизираните алатки на Dreamweaver-от.

 

http://www.java.com.mk/app/files/Image/notepad_javacode.jpg

Твојот прв Јава програм!

Целта на овој дел е да добиеш чувство како е да се пишува Јава програм, како е истиот да се компајлира и да се изврши. Нормално, со самото тоа ќе видиш како изгледа Јава програм, барем наједноставниот. Ќе се трудам се да објаснам на наједноставен начин, но сепак ако нешто не ти е јасно, или ти нема смисла, не се секирај за тоа, ќе го разбереш подоцна. Некои концепти ќе бидат познати на поискусни Јава програмери, а ако тоа не си ти (а најверојатно не си) се ќе ти се разјасни после напис-два. На ова ниво доволно е да се навикнеш на она што мора да се направи, а не да разбереш зошто тоа се прави.

За почеток почни со креирање на директориум на некое прикладно место на твојот диск, најчесто ќе сакаш датотеките од твоите Јава програми да бидат сместени во посебни директориуми. Јас ќе претпоставам дека директориумот кој ти ќе го користиш ќе биде: D:\PrvProgramJava, но ти можеш да си го именуваш директориумот како сакаш. Под Linux на пример најверојатно ќе креираш поддиректориум во твојот личен директориум, на пример: /home/petko/PrvProgramJava.

Користејќи го било кој едитор за текстуални датотеки кој ти одговара (NotePad ќе заврши работа, а доаѓа со самиот Windows) креирај датотека именувана како „Zdravo.java“ во твојот избран директориум (кај мене би било: D:\PrvProgramJava\Zdravo.java). Сите датотеки кои содржат Јава изворен код би требало да имаат наставка „.java“ за истите да бидат идентификувани како изворен код за Јава. Значи внимавај при задавање на екстензијата преку NotePad (истиот вообичаено додава „.txt“), но исто така се надевам дека забележа дека првата буква од името на датотеката е со голема буква, таква и мора да биде.

Во датотеката впиши ги следниве линии, но внимвај, броевите на редовите се чисто за да овде бидат подредени за понатака во текстот истите бидат објаснети, ти никако несмееш истите да ги искуцаш во датоетката.


1  /**
2   * Zdravo.java
3   * Ednostaven Java program
4   */
5
6  class Zdravo {
7    public static void main(String[] args) {
8      // Pecatenje na nekolku poraki
9      System.out.println("Zdravo, svetu!");
10     System.out.println("Ova e samo test.");
11   }
12 }


Само што го напиша твојот прв Јава програм! Пред да ти покажам како да го искомпајлираш и изврши сакам да ги објасниме линиите на кодот, генерално кое што работи.

  • Линиите 1-4: Датотеката започнува со коментар. Ова е секција на кодот која е наменета за полесно разбирање за тоа што изворниот код прави, односно, објаснување на датотека во кратки црти за другите програмери, па дури и сам за себе, како бележник. Јава секако ги игнорира коментарите комплетно, така да програмот ќе работи сосема исто со или без овие линии (но ти можеш да пробаш подоцна), но секако е добра пракса секогаш да се коментира изворниот код опсино на почеток на датотеката. Првиот метод е започнува коментар со карактерите „/*“, а коментарот завршува со користење на „*/“. Се што се наоѓа измеѓу овие маркери ќе биде игнорирано од Јава компајлерот. Можеш да забележиш дека може да се внесе коментар од повеќе линии. Овој коментар го форматирав според стандарден стил, кој е препорачан според документацијата (и конвенцијата) за стилови од Јава. Коментарот започнува со „/*“ проследено со уште една ѕвездичка и нов ред, а понатака секоја линија од коментарот започнува со празно место, придружено со ѕвездичка и пак уште едно празно место, па понатака е твојот текст. Коментарот завршува со празно место проследено со ѕвездичката за терминирање и косата црта („*/“). Овој е стилот кој јас ќе го користам во понатамошните примери, а ти или твојата компанија можете да си развиете свој стил на коментари.

  • Линија 5: Празните линии се игнорирани од Јава, исто како и коментарите

  • Линија 6: Претходно споменав дека Јава програмите се составени од софтверски компоненти кои работат заедно (комуницираат) за да се постигне саканиот ефект. Овој едноставен програм има потреба од само една таква компонента, а оваа линија го маркира почетокот на компонентата. Зборот „class“ назначува дека започнувам нова компонента (сега за сега, зборот class може да го гледаш како со значење компонента), а зборот „Zdravo“ е името на таа компонета (или класа). Големата отворена заграда ({) го маркира почетокот на кодот кој ќе ја дефинира новата класа. Не е коинциденција дека класата (Zdravo) е именувана исто како и датотеката (Zdravo.java), туку тоа така мора да биде. Секоја дефинирана класа мора да биде именувана во датотека со исто име (да, да, и големи и мали букви прават разлика, неможе да дефинираш класа MojaKlasa, во датотека именувана како mojaklasa.java, туку името на датотеката мора да биде MojaKlasa.java). Според конвенцијата имињата на класите во Јава започнуваат со голема буква. Секако ти можеш да именуваш класа како „mojaklasa“, но тоа е ептен ептен ако сакаш, бидејќи другите јава програмери се навикнати имињата на класите да почнуваат со голема буква, но твојот код че биде далеку почитлив, поразбирлив и полесен за одржување ако класата ја именуваш како MojaKlasa.

  • Линија 7: Оваа линија е „најкомплицираната“ од целото програмче. Исто како претходната линија што дефинираше почеток на класа, оваа линија маркира почеток на метода. Штура дефиниција на зборот „метода“  (method): нешто што класата може да прави. Доколку си работел во некој друг програмски јазик, за Јава метода е што за другите е процедура, функција или некоја субрутина. Зборовите „public“, „static“ и „void“ на почетокот на линијата обезбедуваат неколку информации за овој метод. За секој од овие има што да се пише на долго, но сега засега доволно е да ги знаеш како такви (ќе ги објаснуваме подоцна). Зборот „main“ е името на методата. Приметуваш дека имињата на методите започнува со мала буква, а не како класите со голема. Така е според конвенцијата до која мора да се придржуваш доколку сакаш некој друг да го погледне твојот изворен код. Зависно од тоа колку (доколку воопшто) имаш програмерско искуство делот со заградите или ти е веќе познат или сега ти личи премногу страшно. Во основа таму се дефинираат податоците со кои методата ќе располага (или ги бара) за да ја изврши своајта работа, и овде, сега за сега не се загрижувај за деталите. Методата „main“ всушност е специјална. Кога се стартува Јава програм, прво што се бара од програмот е да се лоцира методата „main“ со префикс од зборовите „public static void“ и истата ја користи како појдовна точка за извршување на програмот. Па ако ти е сега за сега полесно, ова можеш да го гледаш како магичното место каде што се започнува.

  • Линија 8: И ова е коментар, но главна разлика е што вака се коментира само една линија. Доколку компајлерот налета на „//“ тогаш тој ја игнорира линијата и не ја зема во предвид при компајлирање. Корсисен е при коментирање на линии од изворниот код бидејќи самите коментари ја зголемуваат разбирливоста на самиот код.

  • Линија 9: Во оваа линија се наоѓа првиот пример за Јава исказ во овој програм. Исказот му кажува на програмот што треба да направи, тоа е команда, инструкција или наредба. Јава исказите можат да имаат различни форми но секогаш сите завршуваат со „;“. Најчеста грешка која почетниците во Јава ја прават е да ги заборават точката и запирката на крај на секој исказ. Овој конкретен исказ му дава иснтрукција на програмот да испечати „Zdravo, svetu!“ на стандардниот излез (на екран). System.out.println може да се преведе како: „испечати ја следнава линија од текст на екранот“, додека остатокот од линијата кажува прецизно што треба да се испечати.

  • Линија 10: Исто како и претходната линија, со таа разлика што овде се печати „Ova e samo test.“

  • Линија 11: Голема затворена заграда, таа во конкретнава линија индицира крај на „main“ методата. Штом програмот ќе дојде до оваа точка тој прекинува со извршување.

  • Линија 12: Голема затворена заграда која маркира крај на класата Zdravo.


Пред да продолжам забелешка за стилот на кодирање. Сигурно примети дека на некои линии од овој програм имаат празни места пред нив, додека други немаат. Овој стил на кодирање е познат како „вгнездувачки“ (indenting), а е широкоприфатен поради тоа што самото вгнездување ја подобрува прегледноста на кодот. Односно, со вгнездувањето на „main“ методата (заедно со затворената заграда од линија 11) со две празни места јасно се искажува дека методот е во „Zdravo“ класата. Кодот исто така можеше да биде напишан и без вгнездување, и ќе работеше сосема исто, но немаше да биде разбирлив на прв поглед. Кога ќе дојдеш на ниво да пишуваш сложени програмски решенија нема да биде чудно ако имаш и вгнездувања од 5 и повеќе нивоа. Со привикнување на ова, и истото да стане навика ќе осигура дека кодот што ќе го создадеш ќе биде читлив како сега така и во иднина.


Компајлирање и извршување на твојот програм


Со веќе напишан прв програм во Јава сигурно си нестрплив да го видиш како се извршува. Пред да можеш да го извршиш твојот програм истиот прво мора да се конвертира во формат кој јава виртуелната машина ќе го разбере. Процесот се нарекува компајлирање, а вклучува извршување на програм кој се вика Јава компајлер кој го проверува твојот Јава изворен код за евентуални грешки и го конвертира во бинарен формат наречен Јава бајт код (Java bytecode) кој ЈВМ-то ќе го разбере. Јава компајлерот се извршува преку команден промпт со командата „javac“, проследено со името на датотеката во која е содржан Јава изворниот код кој треба да биде компајлиран.

За да ја компајлираш твојата Zdravo.java датотека започни со отварање на команден промпт и појди во директориумот во кој се наоѓа датотеката која треба да се компајлира. На пример под Windows за да се влезе во директориумот D:\PrvProgramJava преку командна линија искуцајте ги следниве команди редоследно, притискајќи Enter после секоја од нив.


C:\> d:

D:\> cd PrvProgramJava

D:\PrvProgramJava>



За да ја компајлираш Zdravo.java датотеката искуцај ја следнава команда:


D:\PrvProgramJava> javac Zdravo.java



Доколку се е во ред би требало да има мала пауза следејќи со линијата „D:\PrvProgramJava>“ (без известувања е добра новост). Доколку компајлерот пронајде нешто што не треба на екранот ќе бидат испечатени една или повеќе грешки или предупредувања. Најчесто тоа ќе биде точниот број на линија каде е грешката и отприлика што е грешката, односно природата на грешката ќе биде испечатена (да се повторам дека броевите кои ги редев во примерот не се дел од изворниот код на Zdravo.java).

Откако твојот програм е успешно компајлиран датотека со име Zdravo.class е креирана во истиот директориум со Zdravo.java. Ова е компајлираната  (бинарната) верзија на твојот изворен Јава код и содржи опис за твојата класа Zdravo која ја дефинираше во Zdravo.java датотеката. Новокреираната датотека се нарекува „class file“, од очигледни причини :). Бидејќи новата датотека е веќе бинарна (Јава бајткод) спремна е да биде извршена во јава виртуелната машина.

http://www.java.com.mk/app/files/Image/ms-dos_Prompt_ZdravoSvetu.jpg


Извршувањето на програмот е слично со компајлирањето, само што наместо да се користи Јава компајлерот (javac), ќе ја употребиме извршната околина на Јава (JRE) кое може да се повика со командата java проследено со името на class file-от кој ја содржи „main“ методата. Во овој случај твојата класа се вика Zdravo па за го извршиш твојот програм треба да се употреби следнава команда:


D:\PrvProgramJava> java Zdravo
Zdravo, svetu!
Ova e samo test.


Како што беше очекувано, отпечатени се две пораки: „Zdravo, svetu!“ и „Ova e samo test.“
Твојот програм работи!
Нешто многу битно, кога извршуваш програм треба да го напишеш името на класата (Zdravo), а не името на комапјлираната датотека (Zdravo.class). Јава сама ги наоѓа датотеките според името на класата. Доколку напишеш „java Zdravo.class“ Јава ќе проба да најде датотека која содржи дефиниција за класата „Zdravo.class“ и откако нема да ја најде ти ќе добиеш грешка налик на следнава:


D:\PrvProgramJava> java Zdravo.class
Exception in thread "main" java.lang.NoClassDefFoundError: Hello/class


Ова „NoClassDefFoundError“ кажува дека Јава неможела да најде дифиниција на класата која ти ја бараш, во овој случај Zdravo.class (која се печати како „Zdravo/class“ поради причини кои ќе ги објаснувам во наредни написи).