Dnesni programovani je hlavne o frameworkach - a zdaleka nejvyssi nabidku mas v Jave.
Zalozit aplikacie na open source frameworkoch je kamen urazu. Potom ked budes potrebovat update na aktualny framework uvidis kolko ta to bude stat.
Kedysi vsetci nadavali na stare monoliticke COBOL aplikacie. Ukazuje sa ale, ze tie boli uplne idealne, neboli zavisle na nicom, na ziadnych frameworkoch. Raz sa to naprogramovalo a potom to bezalo s malymi upravami dalsich 20 rokov ...
To je hloupost.
Zatimco monoliticky COBOL plny bugu a bezpecnostnich der se bud necha deravy, nebo prepise zgruntu, v pripade FW se updatuje podle readme (casto automaticky), nebo se to necha derave na starem FW stejne jako ten COBOL. Tedy situace je MNOHEM lepsi.
Jinak ohledne budoucnosti Opensource FW, konkretne Apache Foundation verim mnohem vic, nez treba Oraclu, ktery se vykalel na Javu FX a dal ji do sveta, at se toho nekdo opensource chytne (a kdyz se nikdo nechytne, tak to zdechne), nebo treba MS, ktery zrusil Silverlight bez nahrady.
... Unit testy a mockovani ...
To je tiez ako kedy. Ak mas kvalifikovanych programatorov a testerov, ktori sa vyznaju v problematike tak to spravidla nepotrebujes. V tom pripade je to iba strata casu.
Casto sa za tymi poziadavkami skryvaju len paraziti, ktori sa tym zivia - napriklad rozni test a release manageri.
Ale samozrejme ale outsourcujes a programuju ti to niekde v Indii tak to nutne potrebujes.
Nesmysl, automaticke testy slouzi k tomu, aby se peridicky re-testoval kod pred kazdym commitem, tedy aby byli testeri usetreni opici prace a mohli se soustredit na dulezitejsi vec. Maven ma test phase primo ve svem build lifecyclu.
Co jsem videl vyvoj v realnych firmach, kde nejsou uplni matlaci, tak vesmes plati:
- Kod je v GITu a kazdy si hraje na svem forku
- lokalni buildy ridi Maven, ktery spousit Unit testy, Mock integracni testy (napr. Mockito), pripadne SeleniumHQ na E2E testy. Maven zaroven automaticky hlida unit test coverage, kazdy koder musi plne pokryt svuj kod testy, pripadne zduvodnit, proc to nejde.
- kdyz to lokalne proslo, muze koder mergovat do hlavniho branche GITu
- nad hlavnim branchem GITu se v Bamboo spousti nightbuildy (opet s hromadou testu), kdyz to spadne, Bamboo praskne, kdo to zku*rvil.
- jednou za cas se udela release, main branch se vystavi na lokalnim Nexusu jako maven artefact, vichni si updatujou pom.xml na tento novy artefarct a jede se dal.
Rozumny vyvoj bez automatickeho testovani je naprosty nesmysl.