JavaRush /Java Blog /Random-TK /Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Ja...

Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE bilen deňeşdirmek

Toparda çap edildi
Salam! Häzirki wagtda Java bilýän bir dörediji üçin iň meşhur ösüş ugry web ösüşi. Elbetde, bu hünär üçin öwrenmek üçin zerur tehnologiýalaryň sanawy bar. Esasylaryndan biri Bahar . Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE bilen deňeşdirmek - 1Munuň ýerine Java EE öwrenip bilersiňiz diýip jedel edip bilersiňiz . Bu, elbetde, dogry, ýöne häzirki wagtda täze taslamalaryň köpüsi Java web döredijisi üçin hökmany, hökmany tehnologiýa öwrülen Bahary ulanýar. Bazaryň zerurlyklaryny kanagatlandyrmak isleseňiz, ony öwrenmeli bolarsyňyz. Bu gün Bahar hakda, ýagny, oňa bolan garaýşyňyzy birneme giňeltmek isleýärin : döredilişiniň taryhy, Java EE ýygyndysyndan esasy tapawutlar we Bahar stakasynyň esasy bölekleri barada gysgaça maglumat bermek isleýärin . Başlalyň! Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE bilen deňeşdirmek - 2

1. Bahar nädip we haçan peýda boldy we wagtyň geçmegi bilen nämä öwrüldi

Bularyň hemmesi 2002-nji ýylyň oktýabr aýynda , Rod Jonson “Expert One-onOne J2EE Design and Development” kitabyny ýazanda başlandy: WroxBahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE bilen deňeşdirmek - 3 tarapyndan neşir edilen bu kitapda awtor şol döwürde kärhana Java ösüşiniň ýagdaýyny suratlandyrýar we bir topar zady görkezýär. Java EE we komponent esasly (Enterprise Java Bean)EJB kemçilikleri . Şol bir wagtyň özünde, Rod Jonson adaty Java synplaryna (POJO - ýönekeý köne Java obýektleri) we garaşlylyk sanjymyna esaslanýan has ýönekeý çözgüt teklip edýär. Kitapda, EJB ulanman, ýokary hilli, ulaldylan onlaýn bron goýmasyny nädip döredip boljakdygyny düşündirýär. Bular. programmany ösdürmegiň çylşyrymlylygyny nädip aýyrmalydygyny we ýönekeý JavaBeans-dan diňe EJB-leri ulanmak arkaly mümkin bolan ähli zatlara ýetmek mümkinçiligini açyk görkezdi. Şeýle-de bolsa, Baharyň gerimi serwer tarapynda işleýän programma üpjünçiliginiň ösüşi bilen çäklenmeýär. Islendik Java programmasy, ýönekeýlik, synag ukyplylygy we ýumşak birikdirme nukdaýnazaryndan çarçuwanyň artykmaçlyklaryndan peýdalanyp biler. J2EE ösüş dizaýny bada-bat hit boldy. Kitabyň bir bölegi hökmünde erkin berlen programma kodunyň köpüsi gaýtadan ulanylyp bilner we tiz wagtdan birnäçe döredijiler ony öz taslamalarynda ulanyp başladylar. Wrox-yň deslapky kody we ýamalary bolan kitap üçin web sahypasy bardy . Şeýle hem, kitap üçin onlaýn forum hödürlediler. 2003-nji ýylyň Baýdak aýynda işläp düzüjiler ürürgen Heller we Jan Karoff Rod Jonsony çarçuwanyň kody esasynda açyk çeşme taslamasyny döretmäge ynandyrdylar. Şol pursatdan başlap, Rod, ururgen we annann düýbünden täze bir zat döretmek üçin hyzmatdaşlyga başladylar. Aslynda, täze çarçuwa üçin “Bahar” adyny döreden annann Karoffdy. Bu ýerde göz öňünde tutulýan zat, baharyň bahara meňzeşligi: adaty J2EE-iň “gyşyndan” täze başlangyç.
  • 2003-nji ýylyň iýun aýynda Apache 2.0 ygtyýarnamasy boýunça Bahar 0.9 çykdy.
  • Bahar 1.0 2004-nji ýylyň mart aýynda çykdy. Gyzykly ýeri, “Bahar 1.0” çykmazdan ozal hem öňki 0.9 wersiýasy gaty gowy garşylandy we giňden kabul edildi.
  • 2004-nji ýylyň awgust aýynda Rod Jonson, ürürgen Heller, Kit Donald we Kolin Sampaleanu “Bahar” maslahat beriş, okuw we goldaw kompaniýasy bolan interfeýs21-ni esaslandyrdylar .
  • Oktýabr 2006: XML konfigurasiýa faýllaryny ýönekeýleşdirýän Bahar 2.0 çykdy.
  • 2007-nji ýylyň noýabr aýynda çykan “Bahar 2.5” düşündiriş konfigurasiýalaryny hödürledi.
  • 2012-nji ýylyň dekabrynda çykan Bahar 3.2, Java konfigurasiýasyny hödürledi, Java 7, Hibernate 4, Servlet 3.0 goldaýar we azyndan Java 1.5 talap edýär.
  • Annan Karoff topardan ir çykdy. Rod Jonson 2012-nji ýylda ýaz toparyndan çykdy. Ürürgen Heller henizem Bahar ösüş toparynyň işjeň agzasy.
  • 2014-nji ýylda çykan Bahar 4.0, Java 8-e goldaw berdi.
  • Şeýle hem 2014-nji ýylda “Bahar aýakgaby” dünýä tanadyldy.
  • Bahar 5.0 2017-nji ýylda çykdy. 5-nji bahary goldaýan Bahar Boot 2.x ýaly.
  • Aslynda, iň gowy görýän çarçuwamyz indi bilýän zadymyza öwrüldi.

2. Bahar vs Java EE

Web döredijiler üçin iki sany esasy Java stakany kiçijik deňeşdirip göreliň: Bahar we Java EE. Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE bilen deňeşdirmek - 4
Java EE
Üstünlikleri Kemçilikler
  • Java EE-de ýazylan programmalar has ygtybarly, ygtybarly we göwrümli hasaplanýar
  • Java EE, pudak tarapyndan tassyklanan API standarty
  • Esasan Bahar ýaly düşündirişlere we CDI (kontekst we garaşlylyk sanjymy) esaslanýar
  • EJB konteýnerlerine we POJO-lara esaslanýan ýerine ýetiriş
  • Köp sanly amallar bilen çylşyrymly programmalar JEE tarapyndan gaty gowy işlenýär
  • Giňeldilip bilinýän monolit amaly üçin ulanmakda üstünlikli
  • Java EE-de belli bir stil we sintaksis bar bolan öz OOP dili bar
  • Täze öwrenýänlere düşünmek kyn (we käwagt garrylar üçinem) gaty çylşyrymly programma gurşawy.
  • Taslamanyň soňky bahasy, şol sanda dizaýn, ýerleşdirmek we amaly düzmek gadagan bolup biler
“Oracle” tarapyndan ygtyýarlandyrylan “Java EE” köpçülikleýin bazar goşundylaryny gurmak üçin giň uýgunlaşdyrylan, paýlanylýan gurşawy talap edýän guramalar we kompaniýalar üçin niýetlenendir. Bahar ýaly, Java EE maglumat bazasyna girmek üçin goşmaça kitaphanalary (JDBC, JPA), uzakdan in engineeringenerçilik çagyryşy (RMI), maglumat (JMS), web dolandyryşy, XML gaýtadan işlemek we JavaBeans, portletler, Servlets, Java Server Sahypalary üçin standart API-leri häsiýetlendirýär, we ş.m. Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE bilen deňeşdirmek - 5Java EE-iň esasy maksady, dürli API ulanyp häzirki programmalary gurmak bilen baglanyşykly işläp düzüjileriň ýüzbe-ýüz bolýan esasy meselelerini açmak. Şol bir wagtyň özünde, Java EE-de ösüş diňe bir täze başlanlar üçin däl-de, gadaganlygy ýokary galdyrýan ýokary çylşyrymlylyga eýe. Tejribeli hünärmenler üçin eýýäm ýazylan funksiýalara düşünmek kyn bolup biler, şonuň üçin Java EE-de ösüş has uzaga çekýär we şoňa görä has gymmat. Gysgaça Java EE hakda muny aýdyp bileris: Çylşyrymly, ýöne çeýe. Bolýar, indi bahar hakda azajyk gürleşeliň . Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE bilen deňeşdirmek - 6
Bahar
Üstünlikleri Kemçilikler
  • Obýektleriň özara täsirini netijeli guramaga mümkinçilik berýär
  • Java EE-den has ýönekeý
  • Programmalaryň boş birleşmegini üpjün edýän IOC we AOP esasynda amala aşyrylýar
  • XML, Groovy ýa-da düşündiriş konfigurasiýasyna esaslanýan işler
  • Adaty Java obýektlerini - POJO-lary ulanmaga mümkinçilik berýär, döredijiler programma serweri ýaly kärhana konteýnerine mätäç däldir
  • Java döredijilere ýokary derejeli modullyk berýär
  • Java EE kitaphanalarynyň durmuşa geçirilmegini üpjün edýär, ýöne ulanylyşyny has aňsatlaşdyrýan görnüşde
  • Açyk çeşme ygtyýarnamasy
  • “Spring Boot” başlangyç programma gurnamasyny ep-esli aňsatlaşdyrýar
  • Bahar amaly kody, adatça, synagdan geçirmek aňsat
  • Baharyň ösmegi birneme kyn, sebäbi aýdyň ünsi ýok
  • Täze Java dörediji üçin Bahar çarçuwasyny öwrenmek kyn bolup biler (ýöne Java EE-den has aňsat)
  • Bahar Java EE-den has haýal
Bahar iri kärhanalar üçin açyk çeşme Java çarçuwasydyr. Bahar çarçuwasy, J2EE ideýalarynyň iň ýönekeý durmuşa geçirilmegini üpjün etmegi we POJO esasly programmirleme modeliniň mümkinçiliklerini giňeltmek arkaly ajaýyp programmirleme tejribesini ulanmagy maksat edinýär. Bular. Java EE has resmi standart, Bahar bolsa bu standarty özbaşdak durmuşa geçirýän çarçuwadyr.

Deňeşdirmegiň netijeleri

Meniň düşünişime görä, Java EE we Bahar JDBC we Gibernate ýalydyr, bu ýerde JDBC has çalt tehnologiýa, ýöne şol bir wagtyň özünde köp gereksiz kod bilen. Gibernate eýýäm JDBC ulanýar, ýöne şol bir wagtyň özünde ösüşi ep-esli aňsatlaşdyrýar we azaldýar (käbir çäklendirmeler girizilse-de). Olaryň haýsysynyň gowudygyny takyk aýtmak mümkin däl. Bu, soragy birneme ýada salýar: has gowusy - ArrayList ýa-da LinkedList. Galyberse-de, jogap birmeňzeş bolar - ýagdaýa baglylykda. Olaryň hersiniň öz güýçli we gowşak taraplary bar, ýagdaýyňyzy ölçäp, haýsysynyň häzirki wagtda has köp peýda getirjekdigine düşünip, olardan ünsli saýlamaly. Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE - 7 bilen deňeşdirmek

3. Bahar komponentleri

Bolýar, indi bahary emele getirýän çarçuwalar barada azajyk gürleşeliň.

Bahar çarçuwasy

Islendik ýerleşdiriş platformasynda häzirki zaman Java esasly kärhana programmalary üçin giňişleýin programmirleme we konfigurasiýa modelini üpjün edýän esasy modul. Onda esasy (ýadro) Bahar tehnologiýalarynyň köpüsi bar :
  • ýadro - IoC (gözegçiligiň tersligi) we DI (garaşlylyk sanjymy) düşünjelerini durmuşa geçirýän esasy funksiýa ;
  • AOP - Aspekt-gönükdirilen programmirleme - ahyrky logikany durmuşa geçirmäge gönükdirilen aspektli programmirleme;
  • MVC we WebFlux - web täsiri üçin çarçuwalar;
  • JDBC , ORM - maglumat bazalary bilen täsirleşmek üçin tehnologiýalar;
  • Synag - Bahar konteýner maglumatlarynyň aç-açan, çylşyrymly synaglary üçin işlemek;
  • SpEL - Bahar aňlatma dili - Baharyň aňlatma dili;
  • we ş.m.

Bahar aýakgaby

Başlangyç programma sazlamasyny azaltmak we Bahar programma elementlerini awtomatiki düzmek arkaly Bahar esasly programmalary döretmegi aňsatlaşdyrýar. 5 minutda Bahar ýüküni başlamagyň mysaly

Bahar maglumatlary

Maglumatlara girmek tehnologiýalarynyň, baglanyşyk we baglanyşyksyz maglumat bazalarynyň ulanylmagyny ep-esli aňsatlaşdyrýar (gaýtalanýan kody aýyrýar we maglumatlar bilen özara baglanyşygy aňsatlaşdyrýar). Bu makalada Bahar maglumatlary birikdirmek boýunça gowy sapak bar.

Bahar buludy

Mikroservis arhitekturasynda ulanylýar, mikroservisleriň biri-biri bilen täsirini aňsatlaşdyrýar we AWS , Azure we ş.m. ýaly bulut platformalarynda programmalaryň ýerleşdirilmegini awtomatlaşdyrýar. “Bahar buludy” barada jikme-jik sapak görüň , ýöne bu mowzugyň aňsat däldigini we ýokary derejä ýakyn hünärmenlere gönükdirilendigini duýduraryn.

Bahar howpsuzlygy

Bir programma üçin güýçli we özleşdirilip bilinýän tanamaklyk (autentifikasiýa) we giriş gözegçiligi (ygtyýarnama) guralyny üpjün edýär. Bu ýazgyda Bahar Howpsuzlygyny programmaňyza birikdirmegiň ýönekeý mysalyny tapyp bilersiňiz . Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE bilen deňeşdirmek - 8

Bahar GraphQL

Bu modul, GraphQL Java-da gurlan Bahar programmalaryna goldaw berýär. GraphQL, müşderilere zerur çäkli maglumat toplumyny soramaga mümkinçilik berýän API-ler üçin talap dilidir, bu bolsa öz gezeginde çäkli mukdarda talaplarda maglumat ýygnamaga mümkinçilik berýär. JPA bilen eýýäm tanyş bolsaňyz, şuňa meňzeş (ýa-da şol bir) düşünje bilen eýýäm EntityGraph-a duşan bolmagyňyz mümkin. GraphQL hakda has giňişleýin maglumaty şu ýerden okap bilersiňiz .

Bahar sessiýasy

“Bahar” çarçuwasynyň bu bölegi ulanyjy sessiýasy baradaky maglumatlary dolandyrmak üçin API-leri we ýerine ýetirişleri üpjün edýär (ulanyjy sessiýasy maglumatlary Redis , MongoDb , HazelCast we ş.m. ýaly dowamly ammarda saklanýar ). Bahar sessiýasyny ulanmagyň mysalyny şu ýerden tapyp bilersiňiz .

Bahar integrasiýasy

Bu modul, Bahar esasly programmalarda habarlaşmagy ýönekeýleşdirmek we deklaratiw adapterler arkaly daşarky ulgamlar bilen integrasiýany goldamak üçin döredildi. Bu adapterler, ýazyň uzakdan iberilmegi, habarlaşmagy we meýilleşdirilmegi üçin Baharyň goldawyndan has ýokary abstraksiýa üpjün edýär. Jikme-jik makala .

Bahar dynç alyşy

REST API ösüşini aňsatlaşdyrýan baý gurallar toplumy bilen üpjün edýär: haýyşlary ugrukdyrmak, JSON / XML-i zerur görnüşdäki obýektlere öwürmek üçin gurallar we ş.m. Baharda IEST GOWY hyzmatyň mysalyny bu materialdan tapyp bilersiňiz .

Bahar web akymy

Bahar web akymy Bahar MVC-e esaslanýar we web programmasynyň "akymlaryny" amala aşyrmaga mümkinçilik berýär. Şeýle akymlar, käbir iş meselelerini ýerine ýetirmekde ulanyjyny ugrukdyrýan ädimleriň yzygiderliligini öz içine alýar. Birnäçe HTTP islegini öz içine alýar, döwletlidir, amal maglumatlary bilen işleýär, gaýtadan ulanylýar we tebigatda dinamiki we çydamly bolup biler. Bahar web akymyny birleşdirmegiň mysalyny bu gollanmada iňlis dilinde görmek bolýar .

Bahar web hyzmatlary

Bu modul, XML ýük ýüklerini dolandyrmagyň köp usullaryndan birini ulanyp, çeýe web hyzmatlaryny döretmäge mümkinçilik bermek bilen şertnama esasly SOAP hyzmatlaryny ösdürmegi aňsatlaşdyrmak üçin döredildi. SOAP - pleönekeý obýekte giriş protokoly - objectönekeý obýekte giriş protokoly.

Bahar HATEOAS

Modul, Bahar we esasanam Bahar MVC bilen işleýän wagtyňyz HATEOAS ýörelgesine eýerýän REST dolandyryjylaryny döretmegi aňsatlaşdyrmak üçin käbir API-leri üpjün edýär. HATEOAS - Gipermediýa amaly ýagdaýyň hereketlendirijisi hökmünde - amaly ýagdaýyň hereketlendirijisi hökmünde gipermediýa. Bu Bahar kitaphanasynyň ulanylyşyny şu ýerden görüp bilersiňiz .

Bahar toplumy

Bu modul, korporatiw ulgamlaryň gündelik işi üçin möhüm bolan partiýa maglumatlary gaýtadan işlemek (maglumatlary uly böleklere - partiýalara gaýtadan işlenende) üpjün edýär. “Spring Batch” köp sanly ýazgylary dolandyrmak üçin zerur bolan gaýtadan ulanylýan aýratynlyklary üpjün edýär, şol sanda hasaba alyş / yzarlamak, amallary dolandyrmak, iş gaýtadan işlemegiň statistikasy, işe täzeden başlamak, bökmek we çeşmeleri dolandyrmak. Bu baglanyşykda “Bahar toplumy” -da gyzykly syn tapyp bilersiňiz .

Bahar AMQP

Bu modul, AMQP esasly habarlaşma çözgütleriniň işlenip düzülmegi üçin Bahar düşünjelerini ulanýar. Habar ibermek we almak üçin ýokary derejeli abstraksiýa hökmünde şablon üpjün edýär. Şeýle hem, diňleýji konteýner bilen habarly POJO-lary goldaýar. AMQP - Giňişleýin habar nobat protokoly - Giňişleýin habar nobat protokoly. Taslama iki bölegi öz içine alýar: bahar-amqp esasy abstraksiýa, bahar-towşan bolsa RabbitMQ üçin durmuşa geçirilýär . Bahar ulanyp, RabbitMQ birikmesi bilen mysal Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE - 9 bilen deňeşdirmek

Apache Kafka üçin bahar

Bu taslama, Kafka esasly habarlaşma çözgütleriniň işlenip düzülmeginde esasy bahar düşünjelerini ulanýar . Şablon habar ibermek üçin ýokary derejeli abstraksiýa hökmünde berilýär. Şeýle hem, zerur düşündirişler we diňleýji konteýner bilen habarly POJO-lary goldaýar. Bu ýerde Bahar AMQP bilen aýdyň meňzeşlik bar, ýöne bu modul ýörite Kafka üçin uýgunlaşdyryldy. Bahar Kafkany birleşdirmegiň mysalyny şu ýerden görüp bilersiňiz .

Bahar CredHub

“Cloud Foundry” platformasynda işleýän CredHub serwerinden şahsyýet maglumatlaryny saklamak, almak we pozmak üçin müşderi goldawyny berýär . CredHub - Dürli şahsyýet maglumatlaryny ygtybarly saklamak, döretmek, almak we pozmak üçin API üpjün edýär. “Spring CredHub”, “CredHub API” üçin Java baglanyşygyny üpjün edýär, “CredHub” bilen “Bahar” programmalaryny birleşdirmegi aňsatlaşdyrýar.

Bahar FLO

Turbageçirijiler üçin ýönekeý HTML5 oturdylan wizual dizaýner we akym we partiýa maglumatlaryna gözegçilik etmek üçin ýönekeý grafikleri hödürleýän JavaScript kitaphanasy. Bu tehnologiýanyň görkezişi baglanyşykdaky wideoda .

Bahar LDAP

Bu kitaphana LDAP amallaryny ýönekeýleşdirýär we Bahar JdbcTemplate esaslanýar. Çarçuwaly gözleg we ýapmak, netijeleri görmek, kodlamak / kodlamak bahalary, süzgüçler we başga-da köp zat (Bahar Jdbc ýaly prinsiplere esaslanýar) Bahar LDAP-yň durmuşa geçirilişini şu ýerden tapyp bilersiňiz .

Bahar Roo

Bu modul, Bahar esasly programmaňyzy döredip we dolandyryp bilýän RAD guralyny üpjün edýär. Maksady Java döredijileriň öndürijiligini ýokarlandyrmak. Programmanyňyzyň iş logikasyny ýazyp bilmeýär, ýöne konfigurasiýa we infrastruktura zatlaryny dolandyryp bilýär.

Bahar gabygy

Kitaphana “Spring Shell” bankalaryna bil baglamak we öz buýruklaryňyzy goşmak bilen (bahar noýbasynda usul hökmünde gelýär) doly aýratynlykly gabyk (buýruk setiri hem diýilýär) programmasyny döretmegi aňsatlaşdyrýar. Buýruk setiri programmasyny döretmek, meselem, taslamaňyzyň REST API bilen täsirleşmek ýa-da ýerli faýl mazmuny bilen işlemek peýdaly bolup biler. Has giňişleýin şu ýerde we şu ýerde okaň .

Bahar Statemachine

Bu modul programma döredijilere “Bahar” programmalary bilen döwlet maşyn düşünjelerini ulanmaga mümkinçilik berýär . Bu funksiýany ulanmagyň jikme -jik mysalyny şu ýerden tapyp bilersiňiz .

Bahar depesi

“Spring Vault” , syrlara girmek, saklamak we ýatyrmak üçin tanyş bahar abstraksiýalaryny we müşderi tarapyndan goldaw berýär. Vault bilen aragatnaşyk saklamak , ulanyjyny infrastruktura aladalaryndan azat etmek üçin pes derejeli we ýokary derejeli abstraksiýalary hödürleýär . “Spring Vault” -yň durmuşa geçirilmeginiň mysaly Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE - 10 bilen deňeşdirmek“Bularyň hemmesini öwrenmelimi?” - haýran galmak bilen soraýarsyňyz. Gorkma! Bu nädogry! Has takygy, beýle däl. Bu, Baharda bar bolan tehnologiýalaryň doly sanawydy. Bir öwrenijiniň bilmeli tehnologiýalarynyň sanawy has sada:
  • Bahar merkezi
  • Bahar aýakgaby
  • Bahar web (MVC we REST)
  • Bahar maglumatlary (Bahar ORM, Bahar JDBC, Bahar JPA)
  • Bahar synagy
Taslamalarda köplenç duş gelýän beýleki tehnologiýalar hem bar, ýöne çylşyrymlylygy sebäpli, köplenç ýaşyl täzelikler däl-de, has tejribeli işläp düzüjiler bilen iş salyşýarlar. Şeýle-de bolsa, täze öwrenýänler üçin iň bolmanda umumy düşünje almak peýdalydyr:
  • Bahar howpsuzlygy
  • Bahar AOP
  • Bahar buludy
Beýleki tehnologiýalar ýygy-ýygydan ulanylýar, şonuň üçin belli bir taslama üstünde işlemek üçin olary çynlakaý öwrenmeli. Theeri gelende aýtsak, beýleki makalamda Java döredijiniň bilmeli zatlarynyň doly sanawyny tapyp bilersiňiz . Bu gün meniň üçin hemmesi, ýakyn wagtda görüşeris! Bahar hakda bilmeli zatlaryňyz: taryh, esasy modullar, Java EE - 11 bilen deňeşdirmek
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION