Jump to content
php.lv forumi

Play! 2 JAVA web freimworks


codez

Recommended Posts

Nezinu par konkrēto freimvorku, bet statiskiem tipiem ir milzīgas priekšrocības salīdzinot ar dinamiskiem. Padomā, tas nozīmē to, ka tu jau kompilēšanas laikā vari būt drošs, ka ar tipiem viss ir kārtībā. Un dinamiski piešķir tipus ir iespējams arī Javā kaut vai ar polimorfisma palīdzību. Javā tāda iespēja kā "generics" agrāk nebija, to speciāli ieviesa, lai pataisītu datu struktūru tipus vēl statiskākus jeb konkrēts tips bija jānodefinē arī visiem saturošajiem elementiem (to var arī neizmantot, ja grib, tā ir tikai iespēja), kas principā palīdz vēl labāk pārliecināties jau kompilēšanas laikā, vai ar tipiem viss kārtībā un tā ir iespēja, kuru ieviesa Javā vēlāk, jo saprata, ka tas ir vajadzīgs.

Par veiktspēju gan neko nevaru spriest, vien to, ka, cik man zināms, veiktspēju ietekmē daudzi mainīgie un programmēšanas valoda ir tikai viens no tiem. Gan jau ir kaut kādi pētījumi, kur ir testēts "Hello world!" programma ar kādu cilpu un pāris standarta darbībām un tas izdarīts dažādās valodās un palaists uz vienas mašīnas nemainīgu konfigurāciju un fiksētiem lokāliem resursiem (lai neietekmē tīkli), lai salīdzinātu - jā tie testi varētu būt kaut cik objektīvi, taču kaut ko stāstīt par programmu, kas uztaisīta python un viss notiek pie daudziem lietotājiem un tāpēc python ir labākais, ir klaja demagoģija.

Par "verbose" jeb liekvārdību, te ir jātiek skaidrībā - vai tiek runāts par tādu lietu kā, lai izdarītu kādu darbību, jāizsauc daudz vairāk komandas vienā valodā, nekā otrā? Vai arī mēs izmantojam tipiska sociopāta hakera definējumus ar nosaukumiem "xyz", "yU8", "b2b", "huj", ierakstam 20 atsevišķas darbības vienā rindā, lai kods kļūtu nelasāms, un saucam to par NEliekvārdību? Tas, protams, nekam neder un kā zināms, kompilējamām valodām ir tāda priekšrocība, ka kompilators pats visu saīsinās un optimizēs. Bet citādi attiecībā uz liekvārdību jeb 1 komandas vietā rakstam 5, varu pateikt, ka tas ir atkarīgs no pieejamām bibliotēkām. Jo tas ir atkarīgs no tā, cik daudz gatava koda ir pieejams. Ā, protams, Javā jāvēršas pie objektiem, kuriem jābūt pieejamiem utt. Tas ir jautājums par programmēšanas prasmi un programmas dizainu. Gluži otrādi, tas palīdz izvairīties no spageti koda, kur viss notiek vienā metodē, kā arī palīdz atdalīt lietas, kas jāatdala. Principi "high cohesion" un "loose coupling".

Link to comment
Share on other sites

  • Replies 79
  • Created
  • Last Reply

Top Posters In This Topic

Kad atklāju šo freimworku sapratu, ka laiks pāriet uz JVM, bet pirmās dienas vēl svārstījos un pētīju, ko izmantot labāk, bet ātri vien nonācu pie secinājuma, ka labāk to visu darīt caur Scalu, nevis JAVU.

Kurss ar kuru var sākt apgūt Scalu: https://www.coursera.org/course/progfun

 

Par verbosity varu teikt, ka, lai arī tag scalā darbojos kādas nepilnas 2 nedēļas, bet jau ekvivalents kods scalā ir vismaz 2 reizes īsāks kā PHP, neizmantojot neko kriptisku, bet plusi, kurus iegūstu ir:

1)statiski tipi (mazāk kļūdu - visas kļūdas tiek izķertas kompilācijas laikā (patiesībā kompilātors darbojas IDEē, līdz ar to jau IDĒ tās tiek parādītas)

2)ātrums - JVM + PLAY + AKKA ir aplikācijas, kuras uz ekvivalentu jaudu strādā 5-10x ātrāk par PHP ekvivalentām aplikācijām. Un tas attiecas ne tikai uz kopējo noslodzi, bet arī uz aplikāciajs atbildes laikiem.

3)community un tools - Scalā var izmantot arī prakstiski visas JVM bibliotēkas un tā kā JVM ir viena no visizplatītākajām platformām, ja ne pati izplatītākā, tad var atrast ļoti plašas un daudz bibliotēkas par jebkuru tēmu, dažas 3rd party PHP izmantotās bibliotēkas tag aizvietoju ar daudz efektīvākām JAVA bibliotēkām (strādā 10-50 reizes ātrāk) un API ir patīkamāks.

4)funkcionālā programmēšana - brīžiem datu apstrādē uzraksti dažus .map, . filter, .foldLeft, . reduceLeft un ar 1-2 rindiņām aivieto ekvivalentu 20-30 rindiņu php kodu.

5)lazy val un call by name, ļauj pašam veidot dažādus interesantus paternus (lazy loading, streams, utml.), kas konkrētās darbības veic tikai un tikai tad, kad ir nepieciešamas pats gala rezultāts. respeketīvi, vari definēt, kas ir kas un neuztraukties, ka tas tiks lieki rēķināts - tas tiks rēķināts tikai tad, ja patiešām būs vajadzīgs gala rezultātam.

Edited by codez
Link to comment
Share on other sites

> "huj"

 

LOL. Sakritība?

 

> Kad atklāju šo freimworku sapratu, ka laiks pāriet uz JVM, bet pirmās dienas vēl svārstījos un pētīju, ko izmantot labāk, bet ātri vien nonācu pie secinājuma, ka labāk to visu darīt caur Scalu, nevis JAVU.

 

_No offence_, bet izklausās pēc TV shop. :D

 

Kopumā, būs jāiemēģina! :)

 

Bet, par dinamiskajiem tipiem, tā ir savādāka pieeja un nav salīdzināma.

 

Nāk prātā...

 

http://assets.diylol.com/hfs/7a4/447/005/resized/dwight-schrute-meme-generator-question-which-bear-is-best-false-black-bear-fact-bears-eat-beets-bears-beets-battlestar-galactica-747c20.jpg

Link to comment
Share on other sites

1. Tev vienkārši ir problēmas ar atmiņu. Nekas. Tā gadās.

2. Benchmarkus studijā?!

3. Tā pat, kā jebkurā citā valodā, kas kompilējas uz JVM. Un?

4. Es nezinu kā pie velna tu spēj minēto .map, .filter, .foldLeft, .reduceLeft uzrakstīt 30 php rindiņās. Poor knowledge maybe?

5. Tiešām?!!! Tiks aprēķināts tad kad izsaukts?! OMG OMG izskatās gandrīz kā metode/klase jebkurā citā programmēšanas valodā! WTF WTF. (PS Skalas leizy load downkompilējas uz metodi...)

 

Un ir jābūt absolūtam morālam tizlenim lai salīdzinātu PHP ar JVM valodām. Tik pat labi salīdzini arī C# ar JavaScript.

Edited by F3llony
Link to comment
Share on other sites

Salīdzināt var visas valodas:
http://en.wikipedia.org/wiki/Comparison_of_programming_languages

 

PHP ar Java var salīdzināt, jo abām ir līdzīgi mērķi:
Java - "Application, business, client-side, general, server-side, Web"

PHP - "Server-side, Web Application, Web"

 

Kā redzams, PHP pielietojums ir šaurāks, bet šī pielietojuma robežās ("web app", "server-side app") jau nav aizliegts šīs valodas salīdzināt.

Link to comment
Share on other sites

1. Tev vienkārši ir problēmas ar atmiņu. Nekas. Tā gadās.

Kam negadās, svarīgākais, ka tādas problēmas vairs neietekmē koda kvalitāti.

2. Benchmarkus studijā?!

Lūk PHP benchmarks: http://phpixie.com/blog/php-framework-benchmark/

Vidējais populāro PHP FW atbildes laiks 350 - 700 ms

Ar Play un Scalu vidēji atbildes laiks līdzīgam piemēram, līdzīgos apstākļos ir 30-50 ms

Pie tam pateicoties Event driven serverim, RAM patēriņš ir salīdzinoši mazāks un netā ir kaudze piemēru, kur Play aplikācijas bez problēmām griežas pat uz 64MB servera.

3. Tā pat, kā jebkurā citā valodā, kas kompilējas uz JVM. Un?

PHP nekompilējas.

Pietam arī tā kā JVM ir pielāgota statiskiem tipiem, tad visas dinamiskās valodas, kuras kompilējas uz JVM ir aptuveni 5 - 10 reizes lēnākas, piemēram, JRuby ir vidēji 10 reizes lēnāks par Scalu un Javu.

4. Es nezinu kā pie velna tu spēj minēto .map, .filter, .foldLeft, .reduceLeft uzrakstīt 30 php rindiņās. Poor knowledge maybe?

Iepriekš PHP izmantoju pašveidotu ORM Modeļu klasi. Kopējais klases garums bija ap 250 rindām. Tagad to pašu funkcionalitāti + vēl to, lai viss strādātu ar statiskiem tipiem, pārrakstot scalā, sanāca 50 rindiņas un tas vēl ņemot vērā to, ka neesmu vēl 100% piešāvies programmēt skalā.

5. Tiešām?!!! Tiks aprēķināts tad kad izsaukts?! OMG OMG izskatās gandrīz kā metode/klase jebkurā citā programmēšanas valodā! WTF WTF. (PS Skalas leizy load downkompilējas uz metodi...)

 

Jā, lazy load tiek pārveidots uz aptuveni 15 rindiņu JAVA kodu un līdzīgas funkcionalitātes realizēšana citās valodās būtu arīdzan līdzīgi sarežģīta. Pie tam kombinējot vairākus lazy load tiek panākti interesanti un noderīgi paterni, kurus realizējot citā valodā vajdzētu desmitiem lieku rindiņu. Dažās valodās to varētu abstrahēt, bet, piemēram PHP, abstrahēt lazy loading ir diezgan sarežģīti un galu galā tik un tā būs jārakst vienmēr papildus boiler kods.

Kas attiecas uz streamiem un call by name, tas šo šeit izteiksmju paŗveidošana jau notiek scala kompilātorā un kā tas notiek un kādi efekti un labumi no tā rodas vari ļoti labi saprast, ja noskatīsies iepriekš minēto coursera kursu, kuru vada pats Scala izveidotājs Martins Oderskijs.

Un ir jābūt absolūtam morālam tizlenim lai salīdzinātu PHP ar JVM valodām. Tik pat labi salīdzini arī C# ar JavaScript.

Uzdevums - izveidot skeiloties spējīgu, ātri darbojošos web aplikāciju ar persistentu datu glabāšanu.

Iespējami rīki:

1)Apache, PHP, (Simphony, CI, Zend, Kohana, utt.), Mysql, Memcahed

2)Netty, Scala, Akka, Play2!, Mysql, Memcahced

Un salīdzinām, kura komplektācija der labāk un rada labāku rezultātu.

Salīdzināšanas faktori:

Koda kvalitāte, Izstrādes ātrums, Aplikācijas ātrums, piejamie rīki, pieejamās 3 puses bibliotēkas un to kvalitāte, pieejamais izstrādātaju pools.

Link to comment
Share on other sites

_No offence_, bet izklausās pēc TV shop. :D

Vienam garlaicīgi, jāpareklamē, lai vairāk domu biedru. ;)

 

Vispār PHP foruma admini varētu izveidot pa foruma daļai populārākajām citām valodām/platformām, kuras arī tiek izmantotas web izstrādē, savādāk šis forums ir tā labi savācis pietiekami lielu web izstrādātāju skaitu un taisīt jaunu tik mazā valstī kā LV būtu nelietderīgi.

 

 

tad kas būs, piemērām, PHPUnit ? Weblapa? Labāk pasakiet, ko es nevaru ar php izdarīt, ko var izdarīt ar citām valodām! es domāju, ka caur "ž" varēs praktiski jebko izdarīt.

Telefona aplikācijas.

Operācju Sistēmu.

Jebkuru aplikāciju, kurai vajadzīgs multithread (šis ir ļoti plašs spektrs).

...

Link to comment
Share on other sites

Uzdevums - izveidot skeiloties spējīgu, ātri darbojošos web aplikāciju ar persistentu datu glabāšanu.

Iespējami rīki:

1)Apache, PHP, (Simphony, CI, Zend, Kohana, utt.), Mysql, Memcahed

2)Netty, Scala, Akka, Play2!, Mysql, Memcahced

node + mongo + couchbase

Nginx + fpm + mikrofreims + couchbase + mongo/postgre/mysql/11g

java + jetty + spring + couchbase + anydb

 

Skeilošanās nav atkarīga no valodas, skeilošana ir arhitektūras darbs. 

Katram no šiem komplektiem ir savi plusi un mīnusi. PHP ir viegli distributējams, uzturams un izstrādājams, kā arī prasa zemākas izmaksas. Node ir create-run pasākums un developeru uz nodes arī netrūkst. Java ir Enterprise risinājums, kur prasās daudz nopietnāks darbs pie bāzes aplikācijas - integrācijas, komunikācija, etc etc, izstrāde ir dārgaka un speciālistus ir grūtāk atrast, kā arī grūtāk uzturēt pašu aplikāciju. Arī skeilošanas ir dažādas katrai arhitektūrai. 

 

Un tavs ielinkotais benchmarks neko nepasaka - uzveido vienu un to pašu aplikāciju abās vidēs ar puslīdz vienādu funkcionalitāti un nobencho uz vienas un tās pašas mašīnas, lai būtu objektīvi. 

Link to comment
Share on other sites

Vispār PHP foruma admini varētu izveidot pa foruma daļai populārākajām citām valodām/platformām, kuras arī tiek izmantotas web izstrādē, savādāk šis forums ir tā labi savācis pietiekami lielu web izstrādātāju skaitu un taisīt jaunu tik mazā valstī kā LV būtu nelietderīgi.

 

 

Šim gan es varētu piekrist, bet uzskatu, ka tad jau nosaukumam vairs nevajadzētu būt php.lv, bet kaut kādam tur web developer forumam vai jebkam, kas ar to spēcīgi asociējas. Bet bāze varētu palikt šis pats forums, kur visi biedri uzreiz dabūs tos pašus loginus un šī foruma datubāzi varētu pārnest uz jauno, jauno varētu strukturēt labāk, mūsu izstrādātājiem laiks iznākt no tumšajiem hakeru kaktiem un arī iemācīties lietot plašu tehnisko forumu, par ko varētu arī šo pataisīt. Protams, jaunā foruma apakšforumā ar nosaukumu "PHP" jau varētu būt visa šī pati atmosfēra, kas te ir tagad. Tā lūk. Java foruma Latvijā nav, C# forumu ar neesmu redzējis, Python, Ruby arī nē, arī ne specializēto Javascript... Te ir darbalauks šo visu apvienot vienā, jo latviešvalodīgā interneta vide ir pārāk maza, lai taisītu n-tos forumus, kurus arī jāuztur (citādi tie jau ir miruši).

Link to comment
Share on other sites

> Vispār PHP foruma admini varētu izveidot pa foruma daļai populārākajām citām valodām/platformām, kuras arī tiek izmantotas web izstrādē, savādāk šis forums ir tā labi savācis pietiekami lielu web izstrādātāju skaitu un taisīt jaunu tik mazā valstī kā LV būtu nelietderīgi.

 

Man pieder domēns developers.lv, kur, es, labprāt, uzhostētu projektiņu ar forumu programmētājiem, kuri programmē **ne tikai PHP valodā**, lai šeit nebūtu tik daudz _unrelated stuff like this_. Vienīgais, vajag cilvēkus....

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...