Programmēšana

JRuby on Rails: Java spēks, Ruby on Rails vienkāršība

Rubīns - pilnībā aprīkota objektorientētā dinamiskā (skriptu) valoda ar spēcīgu atbalstu funkcionālai programmēšanai un metaprogrammēšanai, pēdējā laikā ir pievērsusi uzmanību tās elastībai un vienkāršai izstrādei. JRM, JVM balstīts Ruby tulks, apvieno Ruby valodas vienkāršību ar izpildi jaudīgajā JVM, ieskaitot pilnīgu integrāciju uz Java bibliotēkām un no tām.

Kopš manas iepriekšējās JavaWorld rakstu par šo tēmu ("JRuby for Java World"), JRuby ir bijuši daži aizraujoši notikumi. Sun Microsystems nolīga divus vadošos JRuby izstrādātājus Čārlzu Nutteru un Tomasu E. Enebo, norādot uz atbalstu Ruby JVM. Java platforma, Standard Edition 6 (Java SE 6) tika izlaista ar jaunu standarta API tulku pievienošanai dinamiskām valodām. Tiek izstrādāti plāni Java 7 VM, lai tieši atbalstītu dinamiskās valodas, izmantojot jaunu "izsaukt dinamisko" baitkodu un ātru klases definīciju maiņu izpildlaikā. Tikmēr JRuby komanda ir izlaidusi versiju 0.9.2 ar plašāku atbalstu Ruby on Rails, un nākamajā lielajā JRuby laidienā, kas gaidāms februārī, tiks iekļauts pilns atbalsts Ruby on Rails.

Ruby on Rails - viegli lietojams, bet spēcīgs tīmekļa ietvars, kas veidots uz Ruby valodas, ir ātri ieguvis popularitāti jaunām ar datu bāzēm atbalstītām tīmekļa lietojumprogrammām, īpaši Web 2.0 pasaulē. Es jūs nosūtīšu citur, lai iegūtu sīkāku informāciju par Ruby on Rails, sauktu arī par Rails. Neskatoties uz to, ka projektam ir tikai 3 gadi, par to ir uzrakstīts daudz rakstu un grāmatu, un tā dokumentācija ir izcila atvērtā pirmkoda projektam (skat. Ruby on Rails vietni). Tāpat es jūs atsaucos uz manu iepriekšējo rakstu, lai iepazītos ar JRuby.

Šajā rakstā es pārbaudu savienojumu starp Rails un Java. Es salīdzinu Rails un Java Web ietvarus, raksturoju Rails palaišanas ar JRuby priekšrocības un pārskatu dažas mācības, kuras Java izstrādātājs - pat tas, kurš neizmanto Rails - var iemācīties no šī novatoriskā ietvara.

Jauda plus vienkāršība

Sliedes radikāli paātrina un vienkāršo tīmekļa lietojumprogrammu izstrādi, taču tās cieš no nenobrieduma tēla, it īpaši attiecībā uz augstas klases uzņēmuma spējas.

No otras puses, Java platforma ar savām virtuālajām mašīnām, bibliotēkām un lietojumprogrammu serveriem ir palielinājusi ātrumu, stabilitāti un funkcionalitāti, līdz brīdim, kad to parasti uzskata par vadošo platformu augstākās klases serveru lietojumprogrammām. Kamēr Java platforma joprojām ir saistīta ar Java valodu, pastāv risks, ka Java platforma atpaliks, jo jaunākas valodas iegūst popularitāti.

JRuby sasaista visu šo tehnoloģiju papildu stiprās puses, solot pievienoto popularitāti gan Ruby, gan Rails, vienlaikus Java platformai piešķirot jaunu lomu valodu, kas nav Java valodas, darbināšanā.

Sliedes: Kurp virzās Java ietvarstruktūras

Java izstrādātājam Rails šķiet kā dabiska Java Web ietvaru evolūcijas tendenču kulminācija: mazāk nevajadzīga koda, vairāk abstrakcijas un dinamikas un pilnīgāka ārējā funkcionalitāte.

Konvencija par konfigurāciju

Agrīnās Java Platform, Enterprise Edition (Java EE) versijās katram komponentam bija nepieciešama plaša konfigurācija un kods. Piemēram, uzņēmuma JavaBeans katrai pupiņai bija vairāki avota koda un XML konfigurācijas faili. Šī sarežģītība pārvērta EJB par smagā svara attīstības atslēgas vārdu un galu galā noveda pie 180 grādu pagrieziena EJB 3, kura mērķis ir pupiņas POJO (vienkārši veci Java objekti) ar minimālu liekumu un konfigurāciju. Pat ja tā, smagajām Java EE lietojumprogrammām joprojām ir nepieciešams izstrādātājiem izstrādāt kodu, lai tie paši biznesa objekti tiktu izteikti vairākos programmatūras līmeņos - GUI, biznesa loģika un neatlaidība. Tad, neraugoties uz slāņu atlaišanu un līdzību, izstrādātājiem slāņi jāsalīmē kopā ar konfigurācijas failiem. Turpretī jaunākie Java tīmekļa ietvari Seam un Spring atklāj biznesa objektus ar daudz mazāku konfigurāciju un kodu.

Java ietvari ir virzījušies arī uz kaudzes standartizēšanu un integrēšanu Web lietojuma līmeņos. Jau pirmajās dienās Java tīmekļa lietojumprogrammu izstrādātāji ar kodēm izveidoja HTML izvadi no servletiem, izveidoja savas Model-View-Controller arhitektūras un piekļuva savām datu bāzēm, izmantojot SQL, izmantojot Java Database Connectivity (JDBC). Vēlāk viņi apkopoja komponentus, lai izpildītu lielu daļu parasto funkcionalitāti, piemēram, tagu bibliotēkas, Struts un Hibernate. Nesen Spring lielu daļu funkcionalitātes integrēja vienā no augšas uz leju vieglā kaudzē.

Kopš paša sākuma Rails ir iemiesojis šos vienkāršības principus, principus, kurus Rails sabiedrība pazīst kā "Neatkārtojiet sevi" un "Konvencija par konfigurāciju". (Neatlaišana un jēgpilni noklusējumi ir vieni no vecākajiem programmatūras inženierijas principiem; ir brīnums, ka mums tik ilgi bija jāgaida kaut kas līdzīgs Rails.) Sistēma uzminē saikni starp dažādiem līmeņiem, pamatojoties uz vienkāršām konvencijām. Piemēram, nav nepieciešams XML, anotācijas vai tamlīdzīgi, lai ietvaram pateiktu, ka klienta klasi atbalsta klientiem tabula; Rails 'ActiveRecord datu bāzes ietīšanas slānis to uzminē (vienlaikus ņemot vērā plurālizāciju un lielo burtu lietošanu). Sliedes iet tik tālu, ka netieši un dinamiski pievieno atribūtus, lai atspoguļotu datu bāzes kolonnas: a uzvārds kolonnā automātiski tiek parādīts uzvārds atribūts būtnē.

Īpašos gadījumos, kad konvencijas neatbilst jūsu vajadzībām, jūs joprojām varat pievienot konfigurāciju, izmantojot tīru Ruby kodu vai vieglu Ruby līdzīgu YAML formātu, abos izlaižot XML liekās iekavas un aizvēršanas tagus. Bet, ja iespējams, jums vajadzētu pieturēties pie noklusējuma. Rails ir "domājoša programmatūra", kas to ievērojami atvieglo, kad dodaties līdzi plūsmai.

Rails ir ietvertā "baterijās iekļauts" ietvars (frāze, kuru popularizē Python): tas ietver visu nepieciešamo standarta tīmekļa datu bāzes atbalstītai tīmekļa lietojumprogrammai, sākot no datu piekļuves slāņa, beidzot ar modeli, skatu un kontrolieri. Tas ļauj koncentrēties uz to, kas raksturīgs jūsu lietojumprogrammai, nevis pārkodēt kopēju funkcionalitāti vai meklēt atvērtā koda bibliotēkas, kas labi integrējas kopā.

Dinamiskums un pārdomas

Java ietvari arī ir virzījušies uz lielāku refleksijas un metaprogrammēšanas izmantošanu. Piemēram, Spring izmanto refleksiju, lai savienotu visus savus gabalus kopā ar atkarības ievadīšanu, atšķirībā no statiskākas pieejas Java Java standarta servera kaudzei. Hibernate, populārā objektu-relāciju kartēšanas sistēma, veic kartēšanu ar dinamisku metaprogrammēšanu, baitkodu atjauninot izpildlaika laikā, atšķirībā no agrīnām datu piekļuves ietvarstruktūrām, kurām izstrādes laikā bija nepieciešama apgrūtinoša pirmkodu vai baitkodu ģenerēšana.

Hibernate izstrādātājiem šīs funkcionalitātes sasniegšanai bija jāizmanto daži uzlaboti paņēmieni, taču Ruby versijā metaprogrammēšana ir tik dabiska valodas sastāvdaļa, ka Rails izpildes laikā dinamiski ģenerē ne tikai kartējumus, bet arī biznesa slāņa klases definīcijas, kas nepieciešamas, lai piekļūtu un parādīt pamatā esošo datu bāzi, tādējādi samazinot nepieciešamību pēc manuālas kodēšanas vai neelastīga ģenerēta koda izveides.

Atbalsts izstrādes procesam

Apmēram 90. gadu beigās Java programmētāji tika “testēti inficēti” ar JUnit ietvariem, taču servera puses lietojumprogrammu testu rakstīšana vienmēr ir bijusi sarežģīta. Pavasaris tagad ģenerē testus kopā ar tīmekļa lietojumprogrammu. Rails dara to pašu, izmantojot dinamikas un metaprogrammēšanas priekšrocības, lai atbalstītu vairāku veidu testus: vienības testi, kuros tiek izmantotas modeļu klašu individuālās metodes; funkcionālie testi, kas darbojas individuālā tīmekļa pieprasījuma līmenī; un integrācijas testi, kas simulētā lietotāja sesijā izpilda virkni tīmekļa pieprasījumu.

Populārie Ant un Maven rīki standartizēja Java būvējumu automatizāciju. Arī sliedes atvieglo būvniecību ar Ruby's grābeklis veidot rīku; tas pievieno novatorisku migrācijas sistēmu, kas automatizē datu bāzes shēmu un datu jaunināšanu (vai atjaunošanu).

$config[zx-auto] not found$config[zx-overlay] not found