luni, 24 noiembrie 2008

Definirea formatului unui fisier XML cu ajutorul DTD

Interfete Web

DTD (Document Type Definition) este primul limbaj de descriere a structurii unui fisier XML (eXtended Markup Language). Acest limbaj nu tine in mod direct de interfete evoluate, ci mai degraba de specificare modului de organizare a datelor intr-un fisier XML. Pentru ca am ajuns la organizarea datelor in XML, trebuie sa spunem din start ca o atentie deosebita trebuie acordata acestui tip de organizare/stocare mai ales cand volumul de informatii este unul mare. Informatia redundanta trebuie tinuta sub control ea crescand odata cu volumul de informatie utila.


Iata cateva motive pentru folosirea DTD. Mentionez ca pasajul urmator este preluat din textul laboratorului si nu incerc sub nici o forma sa neg acest lucru. Ar fi lipsa de etica sa reformulez si sa scriu in numele meu ceea ce este scris acolo.

Motivele pentru care avem nevoie de definirea structurii fisierelor XML cu care lucram ar fi urmatoarele:
  • Posibilitatea definirii unui standard pentru anumite tipuri de fisiere XML - exemplu SVG (Scalable Vector Graphics) - limbaj bazat pe XML si caracterizat de un fisier DTD care permite definirea graficelor bidimensionale. Toate aplicatiile care creaza fisiere SVG se bazeaza pe acelasi fisier DTD si implicit vor crea fisiere XML ce au aceeasi structura
  • Posibilitatea validarii fisierelor XML primite - DTD-ul permite efectuarea validarii automate fisierului XML primit. Se poate verifica usor (fara a fi necesar a fi scris cod de validare din partea programatorului) daca fisierul respecta structura data si in cazul in care nu o respecta nu trebuie sa pierdem timp incercand sa-l prelucram.
  • Posibilitatea ca fiecare fisier XML sa aiba referinta catre (sau sa contina) fisierul ce-i defineste structura.


Cerinta o puteti gasi aici. Fisierele sursa sunt pe site-ul nostru de interfete evoluate la sectiunea Aplicatii in directorul corespunzator.

Mai multe detalii despre cele doua limbaje puteti gasi la locatiile Wikipedia.

Motive pentru folosirea DTD... Decebal Teodorescu ro Modifica Sterge

Standard vs. Quirks

Interfete Web

Browserele obisnuite afiseaza documentele HTML in modul standard sau quirks(ciudatenie). Aceasta inseamna ca sunt aplicate diferite reguli, in primul caz regulile standardelor W3C, iar in cel de-al doilea caz reguli care simuleaza modul de afisare (non-standard) al browserelor vechi.


Alegerea modului folosit necesita un trigger, iar acest trigger a fost gasit in 'doctype switching'. Conform standardelor, orice document (X)HTML trebuie sa aiba un Doctype care sa indice ce modul utilizat.

  • Paginile vechi scrise inainte de standardizare nu au un doctype. Astfel 'no doctype' inseamna utilizarea modului quirks: afisarea conform vechilor regului.
  • Contrar, daca s-a inclus un doctype, acesta va face trigger pentru modul standard: afisarea conform standardelor.
  • Orice tip nou sau necunoscut de doctype va face trigger pentru modul standard.

De mentionat ca nu pagina face validarea in concordanta cu doctype-ul utilizat, simpla prezenta a tagului "doctype" este suficienta pentru a se afisa in modul standard.In general este bine sa servesti paginile in modul standard,adica sa incluzi declaratia DOCTYPE.

Pentru aceasta se recomanda utilizarea tagului doctype in paginile scrise pentru a obtine efectul de 'interfete evoluate'. Aditional, declararea paginilor XHTML 1.0 Transitional determina afisarea in modul standard in majoritatea browserelor.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

In browsere ca Firefox, Mozilla, Netscape, Opera, si altele, o pagina cu o declaratie DOCTYPE este afisata in modul standard, cu sau fara declaratia XML.

In Internet Explorer insa, daca ceva apare inaintea declaratiei DOCTYPE pagina este afisata in modul quirks. Pentru ca multi vizitatori folosesc Internet Explorer, acesta este un aspect important. Daca vrei sa te asiguri ca paginile apar la fel in toate browserele care implementeaza standardele, ai urmatoarele optiuni. Evident, daca documentul nu contine nimic care este afectat de diferenta dintre modurile standard si quirks, aceasta nu reprezinta o problema.

Daca documentul este afectat, trebuie rezolvate diferentele intr-un fel sau trebuie omisa declaratia XML.Daca decizi sa omiti declaratia XML trebuie sa folosesti UTF-8 sau UTF-16 ca encoding.

Lupta SEO pentru interfete evoluate

Interfete Web

Cu siguranta multi dintre cei care au optat pentru materia Interfete Web au de furca in perioada asta cu intretinerea site-urilor si a blogurilor asociate proiectului de Interfete Evoluate. Lupta pentru primul loc in Google este deocamdata la inceput, dar concurenta va duce metodele de optimizare a site-urilor de Interfete Web la extrem. Chiar daca pare ciudat ca public pe blog un astfel de articol, in continuare voi vorbi despre cateva lucruri de baza in ceea ce priveste promovarea si optimizarea interfetelor evoluate pentru cautarea cu Google.


Tin sa precizez ca factorii care vor aparea in explicatiile de mai jos pot fi importanti si de actualitate, in timp ce altii ar putea sa nu mai fie folositi de google pentru calcularea pagerank-ului.

Cand porniti maretia de proiect de interfete evoluate concentrati-va asupra cerintei si constientizati ca site-ul este despre Interfete Web. Asta e prima posibilitate de greseala. Ceea ce Google numeste keyword trebuie sa fie peste tot in site, chiar si daca nu este in campul vizual al vizitatorului. Aici ma refer la faptul ca acele cuvinte cheie din text trebuie sa se regaseasca in declaratiile META keyword si description. Pentru o mai simpla parcurgere a task-urilor (si pentru ca tot suntem la interfete evoluate) mai jos e o lista cu locurile unde e bine sa aveti cat mai multe keyword-uri.

  • Keyword in Title Tag
  • Keyword in regular text
  • Keyword in links
  • Keyword in Heading Tags H1, H2, H3
  • Keyword in Meta Tags
  • Keyword in Alt Tags
  • Keyword in comments

Link-urile sunt probabil unul dintre cei mai importanti indicatori. Cu cat ai mai multe link-uri catre un anumit site, cu atat lumea te apreciaza si la fel si Google. Din experienta va pot spune ca un link poate face diferenta de 2-3 locuri in pozitionarea la cautare cu Google. In cazul anumitor tipuri de interfete evoluate exista probleme. De exemplu continutul site-urilor pe baza de interfete flash ar putea suferi din cauza faptului ca interfata nu permite robotilor parcurgerea intregului site. De ce apar totusi asemenea site-uri in cautare si uneori chiar pe primele locuri? Numarul link-urilor catre ele este imens. Lista de mai jos prezinta cativa indicatori:

  • Numarul total de link-uri catre site-ul tau (despre Interfete Web in cazul nostru)
  • Numarul de link-uri de la site-ul cu PR mare (adica site-uri care se gasesc la cautare printre primele si in care google are incredere)
  • Numarul de la site-uri autoritative (directorul dmoz e foarte bine vazut, dar greu de ajuns la el :) )
  • Numarul de linkuri on-topic
  • Numarul de cuvinte cheie din link-urile catre tine
  • Numarul de cuvinte cheie din link-urile de la tine catre altii
  • Varsta link-urilor (un link care are mai mult de 3-6 luni s-ar putea sa nici nu fie luat in considerare)

Mai sunt cateva reguli generale de bun simt care se refera la tipul continutului. Nu folositi cine stie ce tehnici de optimizare si tehnologii de interfete web sofisticate daca aveti de gand sa publicati continut pornografic sau care sa lezeze in vreun fel demnitatea anumitor categorii de oameni. S-ar putea sa nici nu fiti primiti in cercul Google.

Cateva sfaturi ar mai fi de natura generala. Se recomanda ca tag-urile TITLE sa contina intre 5 si 10 cuvinte (64-80 caractere). Tag-ul DESCRIPTION ar trebui sa contine intre 100 si 200 caractere (10-20 cuvinte). Tag-ul KEYWORDS ar trebui sa contine intre 100 si 500 caractere (20-50 cuvinte). Directivele actuale sunt: index, FOLLOW - Comanda index spune motoarelor de cautare ca poate sa includa pagina ta. Comanda FOLLOW spune motoarelor de cautare ca poate sa includa si link-urile gasite pe pagina. Tag-ul CONTENT-LANGUAGE spune motoarelor de cautare in ce limba este scris site-ul. Acesta ajuta motoarele de cautare sa categorizeze site-ul in functie regiune sau limba. Ar trebui sa incluzi (de exemplu RO) in tag-ul CONTENT-LANGUAGE. Avertisment: tag-ul AUTHOR lipseste. Tag-ul AUTHOR defineste cine este autor-ul site-ului. Tag-ul COPYRIGHT defineste orice informatie de copyright pentru pagina. Tag-ul REVISIT-AFTER este important pentru ca acesta spune motoarelor de cautare cat de des sa "viziteze" site-ul tau. Formatul trebuie sa fie de forma: "xx days"

Este XHMTL cea mai potrivita alegere in domeniul SEO?

Interfete Web

Am primit intrebarea din titlu intr-o discutie despre interfete evoluate avuta cu unul dintre colegi. Am facut putina munca de documentare si la un loc cu experienta din domeniul web din ultimii doi-trei ani am ajuns la o concluzie care s-ar putea sa para iesita din comun: html vs xhtml ... premiul merge la... amandoi.


Interfetele evoluate pe care le gasim in vremurile noastre pe web se departajeaza mai degraba prin stilul CSS abordat, prin folosirea CSS-urilor cu un grad destul de ridicat de cunoastere in domeniu si mai ales prin tehnicile arhicunoscute de SEO: aici intra optimizarea interfetelor evoluate din punct de vedere al cuvintelor cheie, al raportului cod/informatii, al meta tag-urilor in general.

Pana la urma un site care ofera o interfata evoluata poate fi XHTML Valid, dar din cauza dezorganizarii totale din fisierele sursa ale site-ului, acesta sa primeasca ranking-uri mai mici decat alte interfete evoluate HTML valide (cu un cod sursa mult mai bine structurat si aerisit).

Concluzia cautarilor si a consultarii parerilor de pe diferite forumuri este ca de unul singur XHMTL nu poate face mare lucru. Interfetele evoluate nu sunt nici mai bine, nici mai rau privite de catre motoarele de cautare. Cu toate astea, XHTML ofera posibilitati mai bune de structurare a informatiilor in interfete evoluate.

Adevarul e undeva la mijloc, ca intotdeauna, si pana la urma parerea fiecaruia este cea care conteaza in decizia de alegere a anumitor tipuri de tehnologii pentru anumite tipuri de interfete evoluate.

marți, 4 noiembrie 2008

Sintaxa JavaScript partea 2/2

Interfete Web

Partea 1 a tutorialului o aveti la adresa: http://interfetze.blogspot.com/2008/11/sintaxa-javascript-partea-12.html

Nivel de dificultate: mediu

5. Operatorii:

În JavaScript, operatorii sunt în mare parte identici cu cei din C şi C++, şi anume:

a) operatori aritmetici:

operatorul de atribuire =
adunare +
scădere -
înmulţire *
împărţire /
modulo % (returnează câtul unei împărţiri întregi)
operatorul de incrementare ++ (adună 1 la valoarea operandului)
operatorul de decrementare -- (scade 1 din valoarea operandului)

Notă: operatorii de incrementare şi decrementare sunt operatori unari (necesită un singur operand), în timp ce toţi ceilalti sunt binari (lucrează cu doi operanzi). Ordinea de executare a operaţiilor este cea cunoscută din matematica clasica: operaţiile se execută de la stânga spre dreapta, cu operaţiile de înmulţire şi împărţire prioritare asupra adunării şi scăderii.

Operatorii ++ şi -- necesită puţină atenţie suplimentară, întrucât comportamentul lor diferă în funcţie de poziţia operatorului în raport cu operandul său. Astfel, considerând codul:

var a = 5;
if (a++> 5) a = 10; 


La rularea acestui script, valoarea lui a la final va fi 6, nu 10. De ce? Ei bine, poziţia operatorului ++ este după operand, ceea ce înseamnă că operaţia de incrementare va fi ultima din blocul său de operaţii, care în acest caz mai conţine comparaţia variabilei cu constanta 5. Adică întâi se compară, după care a se incrementează la 6. Efectuând însă doar o modificare minoră la cod, datele problemei se schimbă: 

if (++a> 5) a = 10; 

Rulând acest script, a va lua valoarea 10, deoarece în acest caz incrementarea se va efectua înaintea comparaţiei, moment în care a va avea valoarea 6, condiţia fiind îndeplinită.

b) operatori de comparaţie:

mai mic strict <>
mai mare sau egal >=
egal ==
diferit !=
strict egal ===
strict diferit !==

Atenţie! Reţineţi că operatorul care verifică dacă două valori sunt egale este reprezentat de un dublu semn 'egal' (==), 'egal'-ul simplu fiind operatorul de atribuire. Evitaţi confuzia între aceşti doi operatori!

Diferenţa dintre == şi ===, respectiv dintre != şi !==, este că la cele din urmă, typecasting-ul nu mai este efectuat înainte de comparaţie. 
Cu alte cuvinte, 5 == '5' va returna true, în timp ce 5 === '5' va returna false.

c) operatori logici - folosiţi în combinarea de valori logice (adevărat/fals): 

şi logic &&
sau logic ||
negare (non logic) !

Aceşti operatori se folosesc cel mai des în cazul combinării mai multor condiţii, în bucle sau structuri condiţionale. Spre exemplu:

if (a>= 4 && a <= 10) b = 7; else b = 10; 

În acest caz, variabila b va avea valoarea 7 doar atunci când a aparţine intervalului 4 - 10, orice altă valoare a lui a rezultând în atribuirea valorii 10 lui b.

6. Variabilele

În JS, variabilele nu trebuie declarate explicit. Declararea unei valori este echivalentă cu prima asignare de valoare identificatorului corespunzător. Până la acel moment identificatorul respectiv nu exista în structura script-ului, deci orice referire la el va genera o eroare:

var a = 0; // identificatorul 'a' devine accesibil
if (a == b) a = 1; // va genera o eroare, întrucât
// identificatorul 'b' nu exista în program 


Precedarea primei declarări a unei variabile cu cuvântul-cheie var e opţională, însă e recomandată din motive de compatibilitate, motoarele de interpretare a JavaScript-ului implementate în unele browsere necesitând acest cuvânt-cheie. 
După cum am mai spus, interpretorul JavaScript realizează typecasting-ul (conversia între tipuri) în mod automat, debarasând programatorul de această sarcină. Astfel, dacă rulăm următoarea secvenţă de cod, variabila v se va modifica conform comentariilor: 

var v = 2; // se initializează variabila v sub forma numărului întreg 2
v += 1.4; // v devine un număr real cu valoarea 3.4
v += '5'; // v se transformă într-un string, cu valoarea '3.45' 


Atenţie! Observăm aici două proprietăţi specifice JavaScript-ului:
- pentru concatenarea ('alipirea') cifrei '5' la variabila v, am folosit tot operatorul de adunare +, deoarece în JavaScript, + mai reprezintă şi operator de concatenare de şiruri de caractere. Reţineţi-l, deoarece îl veţi folosi destul de des.
- în ciuda aparenţelor, rezultatul ultimei operaţii nu este numărul real 8.4, ci un string (şir de caractere), cu valoarea '3.45'. Asta se întâmplă deoarece în JavaScript, typecasting-ul se desfăşoară prioritar în direcţia unui rezultat de tip string. Reţineţi şi această anomalie, întrucât, după cum vom vedea în tutorialele viitoare, majoritatea proprietăţilor obiectelor DOM-ului sunt reţinute în variabile de tip string.

Sursa: www.tutoriale.far-php.ro

Sintaxa JavaScript partea 1/2

Interfete Web

Partea a 2-a tutorialului o puteti gasi la adresa: http://interfetze.blogspot.com/2008/11/sintaxa-javascript-partea-22.html

Nivel de dificultate: mediu

In continuare avem un tutorial format din doua parti care are ca scop prezentarea elementelor de sintaxa din JavaScript.

Având în vedere că JavaScript este inspirat din Java, care la rândul său e inspirat din limbajul C, cele trei au o sintaxă foarte similară în ceea ce priveşte operatorii, structurile de control şi accesarea obiectelor, chiar identică în unele cazuri. Voi recapitula totuşi structurile de control, pentru cei care nu le cunosc sau au lucrat în alte limbaje de programare, 'non-C-like':

1. instrucţiunea multiplă
La fel ca în C sau Java, fiecare linie individuală din cod este considerată ca o instrucţiune. De asemenea, structurile condiţionale sau repetitive primesc ca şi obiect de executat o singură instrucţiune. Putem însă grupa execuţia mai multor instrucţiuni ca să fie văzute ca o succesiune unitară de execuţie (practic 'păcălim' compilatorul să le interpreteze ca pe o singură instrucţiune) încadrându-le cu o pereche de acolade { }.
Acoladele sunt folosite de asemenea pentru a delimita instrucţiunile care constituie corpul unei funcţii-utilizator. Nu voi elabora pe această temă, întrucât voi discuta mai pe larg într-unul din tutorialele următoare.

2. comentariile
La fel ca în C şi Java, JavaScript suportă două tipuri de comentarii: comentarii-bloc şi comentarii-linie. Acestea nu au nici o valoare reală pentru program (conţinutul lor nu afecteaza în nici un mod execuţia scriptului), fiind folosite mai mult pentru a realiza o documentare sumară a scriptului, în ideea de a găsi mai uşor o anumită secţiune de cod sau în ideea că scriptul scris de un programator va fi mai târziu modificat sau extins de un altul, înlesnindu-i acestuia lucrul şi înţelegerea algoritmului şi a variabilelor folosite.
De asemenea, comentariile sunt utile la depanarea programului, atunci când suspectăm o instrucţiune sau un bloc de cod că ar genera o anumită eroare: cea mai buna metodă de a confirma acest lucru este să eliminăm codul respectiv din program şi să vedem dacă eroarea mai apare. Ei bine, gândiţi-vă dacă e vorba de 20 sau chiar 50 de linii de cod, câtă muncă ar presupune dacă le-am şterge din program, constatând apoi că sursa erorii e alta, şi să fim nevoiţi să le scriem din nou... (da, ştiu şi eu de comanda 'Undo', însă ea nu este una pe care trebuie să ne bazăm 100% ). Drept urmare, cea mai simplă şi mai sigură metodă de a elimina temporar codul respectiv e să il 'comentăm'.

Revenind la subiect, cele două tipuri de comentarii din JavaScript sunt:
- comentarii-bloc: orice text cuprins între perechea de simboluri /* şi */ consecutivă
- comentarii-linie: textul aflat după simbolul // şi până la sfârşitul linei respective

3. structuri conditionale (branch-uri)
Blocurile condiţionale se folosesc pentru a determina devierea execuţiei programului în direcţii diferite, sau ne-executarea unei anumite secţiuni de cod, în funcţie de valoarea uneia sau mai multor variabile verificate ca şi condiţie.

a) blocul if - else
Blocul condiţional if - else se foloseşte în cazul în care dorim execuţia uneia din două variante, sau dorim ca o secţiune de cod să se execute doar în anumite condiţii. Sintaxa instrucţiunii este următoarea:

if (condiţie)
instrucţiune

//sau

if (condiţie)
instrucţiune1;
else
instrucţiune2; 

Condiţia poate fi orice expresie care poate fi evaluată logic (sub formă de 'adevărat' sau 'fals') - comparare, egalitate, inegalitate, combinaţie de operaţii logice etc. Reţineţi de asemenea că JavaScript realizează conversia între tipurile de variabile automat (automatic typecasting), drept urmare, chiar dacă expresia condiţiei nu e strict logicăa, se încearcă conversia ei la o valoare true sau false. Valorile null, 0 numeric, sau string-ul gol sunt evaluate la valoarea false, în timp ce orice altă valoare este evaluată la true.
Ramura else e opţională, ea putând lipsi, caz în care dacă nu se îndeplineşte condiţia, compilatorul continuă execuţia codului de la linia următoare blocului, practic 'sărind' peste instrucţiune. Instrucţiunea poate fi reprezentată de o singură instrucţiune efectivă sau de o instrucţiune multiplă.

var a = 3;
var b = 6;

if (a == b)
c = true;
else
c = false;

// in conditiile acestea, c va avea valoarea false


b) blocul switch
Switch se foloseşte atunci când expresia evaluată poate avea mai multe posibile valori. Practic un bloc switch e similar cu o succesiune de blocuri if - else.

switch (expresie) {
case valoare1 :
operatie1;
case valoare2 :
operatie2;
...
default :
operatie_implicita;


În momentul în care compilatorul constată că expresia are una din valorile enumerate, va executa codul din bloc, începând de la eticheta corespunzătoare valorii (eticheta = o declaraţie "case valoare :" ). 
Atenţie, execuţia nu va ieşi din bloc la întâlnirea următoarei valori, ci va continua execuţia până la finalul buclei sau întâlnirea unei instrucţiuni break (aşa-numitul comportament 'fall-through' al instrucţiunii switch). Pentru a evita asta, fiecare cod aferent unei etichete trebuie finalizată cu o instrucţiune break.
Secţiunea default e opţională, iar când există, trebuie să fie ultima secţiune. Codul din această secţiune se execută atunci când expresia nu are nici una din valorile etichetelor din bloc, caz în care, dacă default lipseste, nu se va executa nimic.

4. structuri repetitive (bucle)
Structurile repetitive reprezintă instrucţiuni sau blocuri de instrucţiuni care sunt executate în mod repetat, atâta timp cât una sau mai multe condiţii sunt îndeplinite.

a) bucla for - repetiţie pe un număr stabilit de iteraţii
Atunci când o secţiune de cod se doreşte a fi repetată de un anumit număr de ori, cea mai convenabilă soluţie este încapsularea codului respectiv într-o buclă for. Sintaxa instrucţiunii for e următoarea:

for (iniţializare; condiţie; operaţie_la_final)
instrucţiune; 


Codul se execută în cazul unei bucle for în următorul mod:
1. se execută codul declarat la iniţializare
2. se verifică condiţia. Dacă această verificare returnează false, se iese din buclă
3. se execută instrucţiunea (sau blocul de instrucţiuni, în cazul unei instrucţiuni multiple)
4. se execută codul declarat în operaţie_la_final
5. se revine la pasul 2.

a = 1;
f = 10;
for (i = 1; i <= f; i = i + 1) { a = a * i; } 


Codul de mai sus ne calculează valoarea lui 10 factorial (1 * 2 * 3 * ... * 9 * 10), întrucât repetă operaţia de înmulţire a lui a cu i de 10 ori, i fiind incrementat cu 1 la fiecare ciclare.

b) buclele while şi do ... while
Aceste bucle se folosesc atunci când nu ne interesează câte iteraţii se realizează, ci doar ca acestea să se bucleze cât timp o condiţie e îndeplinită. Sintaxa lor e următoarea:

while (conditie)
instructiune;

// si

do
instructiune
while (conditie)
 

Cele două blocuri sunt foarte similare, ambele executând codul până când condiţie returnează false, însă între ele există o diferenţă crucială: în cazul lui while, condiţia este verificată înainte de executarea instrucţiunii (astfel se poate, în funcţie de condiţii, ca bucla să nu cicleze nici măcar o dată), în timp ce do ... while execută întâi instrucţiunea, după care verifică condiţia, astfel instrucţiunea executându-se cel puţin o dată.

În oricare din buclele enumerate mai sus, execuţia poate fi controlată cu ajutorul unor instrucţiuni specifice, şi anume:
break - întrerupe ciclarea buclei şi continuă execuţia programului cu prima instrucţiune de după buclă
continue - întrerupe execuţia iteraţiei curente şi continuă execuţia programului de la începutul buclei

Sursa: www.tutoriale.far-php.ro

JavaScript

Interfete Web

Nivel de dificultate: incepator

Ce este JavaScript?

JavaScript este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor funcţionalităţi în paginile web, codul Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea în construirea siturilor web, dar este folosit şi pentru acesul la obiecte încastrate (embedded objects) în alte aplicaţii. La începuturi a fost dezvoltat de către Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript, şi denumit în final JavaScript.

În ciuda numelui şi a unor oarecare similarităţi în sintaxă, între JavaScript şi limbajul Java nu există nicio legătură. Ca şi Java, JavaScript are o sintaxă apropiată de cea a limbajului C, dar are mai multe în comun cu limbajul Self decât cu Java.

Până la începuturile lui 2005, ultima versiune existentă a fost JavaScript 1.5, care corespunde cu Ediţia a 3-a ECMA-262, ECMAScript, cu alte cuvinte, o ediţie standardizată de JavaScript. Versiunile Mozilla începănd cu 1.8 Beta 1 de asemenea au avut suport pentru E4X, care este o extensie a limbajului care are de a face cu XML, definit în standardul ECMA-357. Versiunea curentă de Mozilla, 1.8.1 (pe care sunt construite Firefox şi Thunderbird versiunile 2.0) suportă JavaScript versiunea 1.7.

Sunt debusolat: Java, JavaScript şi JScript?

Schimbarea numelui din LiveScript în JavaScript s-a făcut cam în acelaşi timp când Netscape incorpora suport pentru tehnologia Java în browserul web Netscape Navigator.

Microsoft a implementat limbajul JavaScript sub numele de JScript, cu o serie de modificări şi extensii faţă de implementarea Netscape. Pe platforma Windows, JScript este unul din limbajele executabile de către Windows Script, şi deci poate fi folosit pentru scriptarea aplicaţiilor ce suportă Windows Script, de ex. Internet Explorer, sau chiar sistemul de operare Windows.

Asociaţia ECMA a standardizat limbajul JavaScript/JScript sub numele ECMAScript (standardul ECMA-262)

Utilizare:

Cea mai des întâlnită utilizare a JavaScript este în scriptarea paginilor web. Programatorii web pot îngloba în paginile HTML "script"-uri pentru diverse activităţi cum ar fi verificarea datelor introduse de utilizatori, sau crearea de meniuri şi alte efecte animate.

Browserele reţin în memorie o reprezentare a unei pagini web sub forma unui arbore de obiecte, şi pun la dispoziţie aceste obiecte script-urilor JavaScript, care le pot citi şi manipula. Arborele de obiecte poartă numele de Document Object Model sau DOM. Există un standard W3C pentru DOM-ul pe care trebuie să îl pună la dispoziţie un browser, ceea ce oferă premiza scrierii de script-uri portabile, care să funcţioneze pe toate browserele. În practică însă, standardul W3C pentru DOM este incomplet implementat. Deşi tendinţa browserelor este de a se alinia standardului W3C, unele din acestea încă prezintă incompatibilităţi majore, cum este cazul Internet Explorer.

O tehnică de construire a paginilor web tot mai întâlnită în ultimul timp este AJAX, abreviere de la Asynchronous JavaScript and XML. Această tehnică constă în executarea de cereri HTTP în fundal, fără a reîncărca toată pagina web, şi actualizarea numai anumitor porţiuni ale paginii, prin manipularea DOM-ului paginii. Tehnica AJAX permite construirea unor interfeţe web cu timp de răspuns mic, întrucît operaţia (costisitoare ca timp) de încărcare a unei pagini HTML complete este în mare parte eliminată.

Sursa: www.wikipedia.org