Acest material este produs sub licență CC BY 3.0 de către membrii echipei ITSpark.ro,cu susținerea Microsoft România (Todi, Zoli, Sebi, Petru, @OpenAtMicrosoft și alții).
În ultimii 2 ani s-a pus accent foarte mare pe cloud computing. Trecând peste istoria cloud computingului, o să vorbim în continuare despre Windows Azure, o platformă de cloud computing creaţă de Microsoft. Azure este un exemplu foarte bun de interoperabilitate a produselor Microsoft, acest accent foarte important fiind pus încă de la începutul dezvoltării sale.
Ceea ce puţini ştiu este că pe lângă limbajele create de Microsoft, C# şi ASP.Net, sunt suportate Java, Phyton, PHP şi Ruby. Printr-un partener extern (Soyatec), Microsoft oferă posiblitatea dezvoltării aplicaţiilor într-unul dintre IDE-urile cele mai folosite de comunitatea open source - Eclipse. Soyatec dezvoltă şi întreţine Windows Azure SDK for Java şi Windows Azure Tools for Eclipse, beneficind de sprijin material şi tehnic din partea Microsoft.
În continuare o să vorbim pe scurt de platforma Azure şi cum se încadrează în paradigma de cloud computing. Există 3 mari categorii de servicii care sunt disponibile în cloud: Software as a Service, Infrastructure as a Service şi Platform as a Service. Azure se încadrează în ultima categorie, şi reprezintă pentru un developer modalitatea cea mai uşoară de a dezvolta aplicaţii
De ce? Imaginea de mai sus este foarte sugestivă. Majoritatea serviciilor de cloud oferă suport doar până la nivelul de Operating System, adică tu ca developer trebuie sa îți instalezi serviciile de care ai nevoie si să te asiguri că rulezi ultimele versiuni ale sistemului de operare. În Windows Azure ai acces doar la nivelul de Application, care include și partea de Storage si Databases. Microsoft se ocupă de restul nivelelor, astfel nu mai trebuie să-ți bați capul dacă ai ultimele versiuni de software sau dacă update-urile sistemului de operare sunt la zi.
Pluginul este dezvoltat de către Sayotec împreună cu Microsoft. El a fost o continuare firească a PHP Development Toolkit dezvoltat anterior şi ne furnizează posibilitatea de a dezvolta aplicaţii în Java din Eclipse. Versiunea minimă de Eclipse suportată este Galileo/Helios 3.5, iar instalarea este foarte uşoară:
Ne-am reamintit despre Windows Azure și știm cu ce diferă de alte soluții cloud computing. Putem acum să începem pregătirea pentru a putea dezvolta aplicații Java în Azure, din Eclipse.
Pentru a putea dezvolta programe sistemul nostru trebuie sa îndeplineasca următoarele cerințe:
Desigur că putem descărca și instala manual aceste programe, dar există o cale mai ușoară - Web Platform Installer. Web Platform Installer (WPI) este o unealtă gratuită care permite instalarea automată a unei multitudini de programe: IIS, SQL Server Express, .Net Framework, PHP și multe altele.
Va apărea un nou folder Windows Azure SDK v1.4 și putem testa deja dacă Compute Emulator funcționează.
Mai avem nevoie și de Windows Azure Starter Kit for Java care este disponibil pe CodePlex. Acest download este un fișier ZIP și poate fi folosit ca template pentru programele create pentru Windows Azure. Fișierele principale sunt:
Am terminat instalările de programe si putem să ne mutam atenția în mediul de lucru Eclipse. Importul fișierului anterior se face foarte ușor: File> Import > Existing Projects into Workspace si selectăm arhiva descărcată înainte.
Cam așa va arăta proiectul nostru în Eclipse:
În continuare trebuie să alegem serverul Java pe care îl folosim; pentru simplitate am ales Apache Tomcat. Pe lângă serverul Java pe care îl vom folosi mai trebuie să alegem și Java Runtime Environment, JRE fiind o dependență a Tomcat.
Întrucât Java Runtime Environment nu poate fi descărcat ca arhivă am ales să arhivez folderul meu C:\Program Files\Java\jre6.
Ștergem arhiva inițială HelloWorld.zip și o înlocuim cu un fișier simplu JSP a cărui conținut este:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>ITSpark Community</title> </head> <body> <%! public String GetString() { return "\"ITSpark Interop!\""; } %> The Java Server is Running = <%= GetString() %> </body> </html>
Structura proiectului trebuie sa fie următoarea (pentru simplitate am creat câte un folder pentru Tomcat si JRE):
Următorul pas este să configurăm fișierele startup.cmd si ServiceDefinition.csdef. Primul fișier va conține comenzile pe care vrem să le executăm când pornește instanța WorkRole1, iar în ServiceDefinition.csdef o să definim endpoint-urile, adică porturile pe care le deschidem pentru a putea accesa aplicația noastră.
Startup.cmd
@REM unzip Tomcat cscript /B /Nologo util\unzip.vbs tomcat\apache-tomcat-7.0.11-windows-x86.zip . @REM unzip JRE cscript /B /Nologo util\unzip.vbs jre\jre6.zip . @REM copy project files to server md apache-tomcat-7.0.11\webapps\myapp copy HelloWorld.jsp apache-tomcat-7.0.11\webapps\myapp @REM start the server cd apache-tomcat-7.0.11\bin set JRE_HOME=..\..\jre6 startup.bat
Scriptul ne dezarhivează cele 2 fișiere, apoi copiază fișierul nostru HelloWorld.jsp și pornește Apache Tomcat. Trecem la fișierul ServiceDefinition.csdef unde adăugăm următoarele linii:
<Endpoints> <InputEndpoint name="Http" protocol="tcp" port="80" localPort="8080" /> </Endpoints>
Astfel, conținutul fișierului nostru trebuie să fie:
<?xml version="1.0" encoding="utf-8"?> <ServiceDefinition name="WindowsAzureCloudServiceProject" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WorkerRole name="WorkerRole1"> <Startup> <!-- Sample startup task calling startup.cmd from the role's approot\util folder --> <Task commandLine="util\startup.cmd" executionContext="elevated" taskType="simple"/> </Startup> <Endpoints> <InputEndpoint name="Http" protocol="tcp" port="80" localPort="8080" /> </Endpoints> </WorkerRole> </ServiceDefinition>
În continuare putem testa local aplicația nostră folosind emulatorul de Azure. Îl putem porni din meniul Start > Windows Azure SDK v1.4 > Compute Emulator.
În acest moment suntem pregatiți să rulăm local aplicația noastră. În Eclipse, din meniul Project dam Build All, moment în care apar un număr de fișiere și foldere noi. De interes pentru noi sunt cele 3 fișiere din folderul emulatorTools care ne permit să testăm aplicația noastră:
În acest moment aplicația noastră ar trebui să fie accesibilă la adresa http://localhost:8080/myapp/HelloWorld.jsp, serverul Tomcat definit anterior acționând ca webserver.
Cât de greu este să modificăm aplicația noastră ca în loc de emulator să ruleze pe Azure? Foarte simplu! Mergem în fișierul package.xml și înlocuim în tag-ul packpagetype din local în cloud. Gata, aplicația poate rula în Azure!
În continuare o să avem nevoie de o subscripție de Windows Azure. Microsoft oferă un tip de subscripție gratuită care ne oferă lunar 750 de ore pentru o instanță extra small, exact cât avem nevoie pentru a rula 24/7 timp de o lună. După ce trecem prin pașii de înscriere în Windows Azure și confirmăm datele (avem nevoie de un card de credit), ne putem loga la adresa https://windows.azure.com/default.aspx.
În partea stânga jos alegem meniul Hosted Services, Storage Accounts & CDN apoi alegem submeniul Hosted Services si va apărea butonul New Hosted Service.
Completam câmpurile necesare, iar în ultimele 2 câmpuri alegem package-ul respectiv fișierul de configurare generat anterior. Diferența dintre stage și production environment este că primul a fost gândit pentru a testa „intern” aplicația care apoi să fie mutată în spațiul public. Upload-ul fișierelor va dura câteva minute, iar configurarea mașinii virtuale în jur de 10-15 minute. Iată și Tomcat rulând în Windows Azure!
Articolul a început printr-o scurtă descriere a Windows Azure și cum diferă el față de alte soluții cloud computing. Am aflat că pentru un developer e mai ușor de utilizat Azure (PaaS) pentru că nu trebuie să ne ocupăm de întreținerea mașinii virtuale. Am trecut apoi prin pașii necesari pentru a dezvolta o aplicație Java pentru Windows Azure, am văzut cum arată interfața din Azure si cât de ușor a fost să ne mutăm aplicația în cloud.
Windows Azure oferă o excelentă oportunitate pentru dezvoltatorii obișnuiți să lucreze în Eclipse cu Java si PHP de a utiliza servicii de cloud pentru aplicațiile lor, beneficiind astfel de avantajele cloud computing-ului: reduceri de costuri, scalabilitate și securitate.
Join now or Sign in with your favorite social networking sites.