Doporučte programovací jazyk pro Windows

Re:Doporučte programovací jazyk pro Windows
« Odpověď #390 kdy: 22. 03. 2020, 14:38:24 »
5) Zkompiluji zdrojáky za pomoci Mavenu a vytvoří se mi .jar soubory

My v Jave pouzivame Maven. Pokud se ho neches ucit a ani si nechces stahnout hotovy example, tak i presto si stahni zdrojaky pres nej.

1. Dej do googlu:

aws sqs maven

2. Hned prvni url co ti google najde:

https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-sqs

3. Vyber si libovolnou verzi, treba tu nejposlednejsi:

https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-sqs/1.11.749

4. Klikni si na "Files   jar (315 KB)" a stahni si to Jarko.

5. Nepouzivej proboha tu plceku Eclipse, stahni si Intellij Idea Community, to je nej IDE na Javu na svete.

6. Java se musi zbuildit vzdycky do Jarka, takze kdyz nepouzivas Maven jako build tool, tak ti to Jarko musi vyrobit IDE, a proto:

7. Naimportuj si to jarko pres IDE do projektu. A hledej nekde tlacitko build, ja uz jsem to takto nedelal X let a zapomel jsem to. Vsichni pouzivaji Maven.

A mas to, lepsi nez pip  ;)

A jestli ti muzu doporucit, pokud nechces zabit cely tyden a zesedivet, tak nic s AWS nedelej.
« Poslední změna: 22. 03. 2020, 14:42:12 od PetrK »


Re:Doporučte programovací jazyk pro Windows
« Odpověď #391 kdy: 22. 03. 2020, 14:54:39 »
Haha, pockat, chyba, to ti nebude fungovat. Jsem to tak dlouho nedelal ze jsem si neuvedomil, ze si budes muset rucne poresit zavislosti na jine jarka. Takze na te strance od mavenu jsou jeste vypsany depende cies ktere to ma:

https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-sqs/1.11.690

Jenze ty dependencies budou mit dalsi dependencies, takze to si uzijes.
« Poslední změna: 22. 03. 2020, 14:56:35 od PetrK »

Re:Doporučte programovací jazyk pro Windows
« Odpověď #392 kdy: 22. 03. 2020, 15:06:39 »
1. Pro zakladni rozvrzeni projektu vc submodulu je Gradle 1:1 to same co Maven
2. S tim rozdilem ze Gradle neumi definovat Parenta
3. S tim rozdilem ze Gradle je mene zaboilerplatovany, jenze jaksi za cenu toho, ze clovek nema naseptavani.
4. S tim rozdilem, ze v Gradlovi se da dobre programovat - to je snad ta nejhorsi vlastnost, protoze by to nekoho mohlo napadnout delat. Co potrebujete pri buildu programovat?
Ad 1) Jenom dokud máte prázdný projekt. A vlastně už ani to není pravda, Gradle zavedl rozdělení závislostí na api a implementation, takže konečně tranzitivní závislosti dávají smysl.
Ad 2) Gradle samozřejmě parenta nadefinovat umí. A umí, cokoli chcete – je to jen kód. Takže si můžete parenta udělat, jak chcete – můžete z něj dědit, co chcete, můžete si to parametrizovat, můžete si parenty třeba přepínat, když budete chtít.
Ad 3) IntelliJ Idea v Gradle skriptech našeptávat umí.
Ad 4) To, že můžete v buildskriptu programovat, je obrovská výhoda. Potřebujete to vždy, jakmile nejde jen o nějaký školní projekt. Stačí se podívat, kolik pluginů pro Maven vzniklo. Build chcete upravovat v závislosti na prostředí, kde poběží, chcete tam integrovat informace z VCS, chcete publikovat balíčky a dokumentaci, mimifikovat a komprimovat soubory, podepisovat, a milion dalších věcí, u každého projektu jiné. Když můžete v buildskriptu programovat, nepotřebujete různé šílené CI nástroje, které „naprogramujete“ (ideálně klikáním ve webovém prohlížeči), protože jediné, co od CI potřebujete, je spustit příslušný Gradle task. A co potřebujete si naprogramujete v něm.

1. Zkousel jste si uz zbuildit ten Micronauti Lambda example na Githubu s GraalVM? Vzdyt to je hrozne, kompilace tim Graalem trva snad 3 minuty.
2. Kdyz jsem videl nejaky benchmark, tak to stejne melo pomalejsi cold start nez Node.js lambda.
3. Na takovou monolitickou lambdu rovnou muzete pouzit Spring Cloud Function - nevim jen jestli tu v budoucnu bude podporovat Graal. 
4. Ikdyz to vsechno udelate, tak budete tvorit relativne velke monoliticke lambdy a ja se ptam - proc to do haje radeji rovnou nerozjet jako service v docker kontejneru? Co tim ziskate ze to bude lambda funkce?
Ad 1) Vašemu CD nástroji to nějak vadí, stěžuje si, že mu to trvá 3 minuty?
Ad 2) No jo, jenže Node.js už má za sebou roky optimalizací rychlého startu, GraalVM je ve stavu, že už to jde nastartovat a běží to. Optimalizace teprve přijdou.
Ad 3) a 4) Pokud vytváříte „monolitickou lambdu“, je chyba ve vás, ne v nástrojích.

Výhoda je ta, že mám vše na jedné platformě. Takže můžu mít aplikaci, která se skládá z jednoho nebo více monolitů, kolem se mohou motat mikroslužby a nějaké nárazové prkotiny můžu řešit lambdou. A pořád mám jednu platformu a jeden zdrojový kód, takže můžu sdílet implementaci a přelívat ji tam, kam zrovna potřebuju. Chci vytrhnout z monolitu část a nadělat z ní mikroservisy? Jasně, není problém, nemusím nic programovat znova, jenom implementaci upravím pro jiný způsob běhu. Přestane lambda stačit? Nevadí, udělám z ní mikroservisu.

Jave tim ujel vlak a muj nazor po X hodinach googleni je, ze to jeste nedohnala.
Nemyslím si, že povědomí o současných technologiích lze získat googlením.

A pokud GraalVM nepohne pri rychlosti buildu zadeki, tak ani nedozene.
Jenže rychlost buildu do nativního kódu nikoho nezajímá. Vybral jste tu jedinou operaci, která nebrzdí nikoho důležitého – ani programátory, ani uživatele. Pro programátory je důležitá klasická kompilace do bajtkódu a start aplikace, kompilace do nativního kódu je nezajímá. A pro uživatele je důležitý běh aplikace.

Nicmene reseni b mohlo byt jine, a sice jinaci JVM. V Lambde vam je burt nejaka performance vyjma cold startu. Pomale to muze byt klidne jako python. Hlavne at se ta mrcha lina rychle nastartuje.
Ta jiná VM se jmenuje SubstrateVM a je právě součástí GraalVM. Už teď je start dost rychlý, a věřím, že se bude dál zrychlovat – protože optimalizovat ho dává smysl, na rozdíl od optimalizace rychlosti release buildu.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #393 kdy: 22. 03. 2020, 15:12:59 »
4. Klikni si na "Files   jar (315 KB)" a stahni si to Jarko.
Ne, to rozhodně ne. O závislosti se stará buildovací nástroj, takže se jen v konfiguraci projektu uvede, že projekt závisí na nějaké knihovně, a buildovací nástroj už se sám postará o stažení té knihovny a závislostí.

A balíčky pro Javu se nehledají Googlem, ale v repository – např. přes javalibs.com. Tam se vám i pěkně ukáže, jak závislost vložit do Mavenu nebo Gradlu (nebo jiného buildovacího nástroje).

Mimochodem, v tom Gradlu si můžete snadno naprogramovat, aby se vám závislost na tom AWS SDK povýšila skriptem (ať už na ruční postrk, nebo automaticky).

Re:Doporučte programovací jazyk pro Windows
« Odpověď #394 kdy: 22. 03. 2020, 15:17:04 »
LarryLin: tady je minimalni example s Mavenem, doporucuju ho otevrit v IntelliJ Idea Community:



Re:Doporučte programovací jazyk pro Windows
« Odpověď #395 kdy: 22. 03. 2020, 15:22:03 »
Mimochodem, v tom Gradlu si můžete snadno naprogramovat, aby se vám závislost na tom AWS SDK povýšila skriptem (ať už na ruční postrk, nebo automaticky).

Wtf, vzdyt to s da v mavenu udelat tak, ze se udela <version>RELEASE</version>. To je uplne typicke, presne co jsem rial s programovanim v gradlu - vy uz byste tam bastlil na to skript.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #396 kdy: 22. 03. 2020, 15:32:30 »
... gradle ...

Nebudu to rozebirat a pitvat protoze se mi nechce. Delam v Java enetrprise enironmentu pro velkou spolecnost, Vyrobil jsem tu uz nekolik spring service a nekolik jsem jich uz udrzoval. V buildovacim nastroji zadne programovani neni nutne, a neni potrba ani mnoho pluginu. Delate to podle me spatne. Uz jenom to, jak zminujete CI a Maven - konfigurace CI nema co delat v Mavenu, ale v tom CI toolu, ktery pouzivate, si mate vyrobit uniformni build pipeline, a ne neco davat do mavenu.

Uz jsem delal jednou na projektu, kde Maven byl zapluginovany a nekdo se v tom pokousel i neco programovat a ohybat to. To byla samozrejme zumpa projekt pro zumpa-zakaznika, se zumpa-programatory.

Zadne programovani v Mavenu nepotrebujete, ani prehrsel pluginu, pomka maji byt jednoducha a prehledna, a kdyz mi nekdo rika, ze potrebuje gradle aby mohl programovat a nadava na Maven, tak to u me dela dotycny hodne zle.

Jamile se zacne zbytecne programovat v buildu, tak Franta to naprogramuje tak, Jozka zase onak, a je z toho bordel.
« Poslední změna: 22. 03. 2020, 15:37:53 od PetrK »

Re:Doporučte programovací jazyk pro Windows
« Odpověď #397 kdy: 22. 03. 2020, 15:41:52 »
Wtf, vzdyt to s da v mavenu udelat tak, ze se udela <version>RELEASE</version>. To je uplne typicke, presne co jsem rial s programovanim v gradlu - vy uz byste tam bastlil na to skript.
Ne, tohle dělá něco jiného. To použije vždy poslední ostrou verzi, o které Maven ví. To není dobrá cesta, protože tak se vám může aplikace klidně rozbít sama od sebe – nic nezměníte, jenom si Maven na pozadí stáhne novou verzi, se kterou vám aplikace nebude fungovat. Právě proto jsem psal o té variantě, že se to povýšení dělá skriptem, ale řízeně – v okamžiku, kdy já chci. Třeba to můžu dělat na CI každou noc – povýším knihovnu na nejnovější verzi, spustím testy, a když všechny testy proběhnou, nová verze se commitne.

Ano, samozřejmě, že bych na to napsal skript, protože se to má chovat tak, jak chci já, ne podle nějakého šíleného defaultu.

Uz jenom to, jak zminujete CI a Maven - konfigurace CI nema co delat v Mavenu, ale v tom CI toolu, ktery pouzivate, si mate vyrobit uniformni build pipeline, a ne neco davat do mavenu.
Ale já žádnou konfiguraci CI nechci mít. Já od CI chci jenom to, ať automaticky spouští úplně to samé, co si spouští vývojář u sebe. Taková ta zábava, kdy u vývojáře něco funguje a v CI to padá, nebo opačně, je dobrý způsob mrhání času, ale vývojáři myslím mohou dělat užitečnější věci.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #398 kdy: 22. 03. 2020, 15:49:07 »
Wtf, vzdyt to s da v mavenu udelat tak, ze se udela <version>RELEASE</version>. To je uplne typicke, presne co jsem rial s programovanim v gradlu - vy uz byste tam bastlil na to skript.
... povysit jen urcitou subverzi ...

... build tool pada ale na localhost nepada ...

1. Dyt to muzete taky v Mavenu:

<version>[1.0,2.0)</version>
Vam bude automaticky dava posledni verzi pro 1.*

2. Pokud vam pada build v CI toolu, tak sorry ale to neznamena, ze budete neco programovat v Mavenu. To mate blbe nakonfigurovany ten vas tool. CI uz jsem konfiguroval nekolik a pokazde je na vine spatna konfigurace CI, rozhodne za to nemuze Maven - v pomku nechci mit ani jednu jedinou malou zminku ohledne CI.

3. ted uz i chapu, proc chcete do buildu davat neco z VCS - vy mate totiz zblastlene to vase CI. Rozumna CI pipeline umi ukazat, jaky commit se zrovna buildi. To je vas problem, ze to chcete programovat sam.

Delate to spatne!

Opet jsem po teto diskuzi presvedcen, ze kdo pouziva Gradle aby mohl programovat build, tak dela neco hodne spatne. Jakmile nekdo nadava na Maven, ze se v nem neda programovat, tak ja se zacnu krizovat co to proboha ten dotycny chce jit delat.
« Poslední změna: 22. 03. 2020, 15:53:38 od PetrK »

Re:Doporučte programovací jazyk pro Windows
« Odpověď #399 kdy: 22. 03. 2020, 16:24:43 »
No vzhledem k tomu, ze na tuto problematiku maven vs. gradle narazim i u nas ve firme, tak mam nutkani se vyjadrit :) Gradle je samozrejme lepsi volba pro novy projekt. O tom nemam pochyby. Asi je pravda, ze je jednodusi si ten build zprasit nez s mavenem. Ale to by snad, doufam, nemelo byt relevantni kriterium. Zprasit se necha kde co. Lidi co maji tendency prasit by se k tomu vubec nemeli poustet. Namatkou treba profily v mavenu a gradlu... no, sam jsem maven jeste pred par rokama pouzival. Drive lepsi volba nebyla. Jedine co nechapu, proc vsichni enterprise javisti pouzivaji spring, ktery sam davno migroval na gradle, ale pritom urputne zustavaji na mavenu u svych projektu.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #400 kdy: 22. 03. 2020, 17:07:40 »
Asi je pravda, ze je jednodusi si ten build zprasit nez s mavenem. Ale to by snad, doufam, nemelo byt relevantni kriterium. Zprasit se necha kde co.

Vsak to rikam - to raci prejdu rovnou na Python nez Gradle. Kdyz uz se da zprasit kde co a nema to byt kriterium, tak proc vlastne vubec delat neco v Jave? :D A proc pouzivat takove silene IDE a silene frameworky jako je Spring? Kdyz zprasit se da kdeco.

A proc vubec pouzivat Python? To muzu rovnou delat v Node.js. S Node.js muzu panecku delat veci, + frontend. A prco to vubec delat OOP jak nekde v Pythonu a v Jave? Vzdyt to je zastarale, delat neco OOP. Proc to nedelat funkcionalne? A proc to nedelat cele Await/Async? Proc zbytecne vyrabet thready kdyz to k nicemu neni? Takze proc ne Node.js + babel + funkcionalni programovani? Trend jasne ukazuje, ze timto se ubira vyvoj.

Jestli se budeme zbavovat veci, protoze jsou "zastarale", a nahrazovat je vecma, ktere nic lepsiho neprinasi, tak to muzu rovnou prejit na Javascript s Node.js.
« Poslední změna: 22. 03. 2020, 17:12:11 od PetrK »

Re:Doporučte programovací jazyk pro Windows
« Odpověď #401 kdy: 22. 03. 2020, 17:36:48 »
Asi je pravda, ze je jednodusi si ten build zprasit nez s mavenem. Ale to by snad, doufam, nemelo byt relevantni kriterium. Zprasit se necha kde co.

Vsak to rikam - to raci prejdu rovnou na Python nez Gradle. Kdyz uz se da zprasit kde co a nema to byt kriterium, tak proc vlastne vubec delat neco v Jave? :D A proc pouzivat takove silene IDE a silene frameworky jako je Spring? Kdyz zprasit se da kdeco.

A proc vubec pouzivat Python? To muzu rovnou delat v Node.js. S Node.js muzu panecku delat veci, + frontend. A prco to vubec delat OOP jak nekde v Pythonu a v Jave? Vzdyt to je zastarale, delat neco OOP. Proc to nedelat funkcionalne? A proc to nedelat cele Await/Async? Proc zbytecne vyrabet thready kdyz to k nicemu neni? Takze proc ne Node.js + babel + funkcionalni programovani? Trend jasne ukazuje, ze timto se ubira vyvoj.

Jestli se budeme zbavovat veci, protoze jsou "zastarale", a nahrazovat je vecma, ktere nic lepsiho neprinasi, tak to muzu rovnou prejit na Javascript s Node.js.

Nikdo na gradle nemigruje protoze to je cool, ale protoze mu to realne prinasi spoustu vyhod ;) A jinak to co si tu popsal beru jako seznam nemyslu. Nic te pred zprasenym projektem/produktem neuchrani, kdyz na tom budou delat nekompetentni lidi co dane technologie, postupy a principy neznaji. Takze jo. Zprasit se necha kde co...

Re:Doporučte programovací jazyk pro Windows
« Odpověď #402 kdy: 22. 03. 2020, 17:46:10 »
Nic te pred zprasenym projektem/produktem neuchrani, kdyz na tom budou delat nekompetentni lidi co dane technologie, postupy a principy neznaji. Takze jo. Zprasit se necha kde co...

A co kdyz tech technologii budes mit 3 zadeke a kompetentni lidi, ktere je znaji, uz proste nikde nesezenes? Na tohleto Java jednou chcipne, tim jsem si jisty.

https://www.youtube.com/watch?v=Og847HVwRSI

Protoze ono na tom, jak tu lidi nadavaji na Javu, co vsechno se musi naucit za sracky, aby v tom mohli neco delat, je hodne pravdy.

Kdyz Pythonista si vystaci s Pip, tak proc by si Javista nevystacil s Mavenem. Zadny Gradle nebude, holoto bidna, az do skonani Javy!
« Poslední změna: 22. 03. 2020, 17:47:49 od PetrK »

Re:Doporučte programovací jazyk pro Windows
« Odpověď #403 kdy: 22. 03. 2020, 18:02:29 »
Nestalo se nekdy na prelomu roku 2000 neco podbneho C++, kdyz ho zacali vytlacovat mentalove s Javou? :D Myslim si, ze uz brzy bude Java vytlacena taky. Zvlaste pak v dobe

PaaS -> fck off JDK
FaaS -> fck off maven, fck off gradle, fck off sofistikovane sdileni knihovnich funkci

Cloud samotny se stane vyvojou platformou a jako jazyk ti bude klidne stacit Python a Javascript. Uz nebude potrebovat vlastnost Javy vyrabet robustni servicy, protoze tuto roli zastane Cloud samotny.

Lidi sice nadavaji ze FaaS je pomaly, jako nadavali kdysi na Javu, ale to se postupne zmeni.
« Poslední změna: 22. 03. 2020, 18:05:18 od PetrK »

Re:Doporučte programovací jazyk pro Windows
« Odpověď #404 kdy: 22. 03. 2020, 18:05:31 »
Dyt to muzete taky v Mavenu:

<version>[1.0,2.0)</version>
Vam bude automaticky dava posledni verzi pro 1.*
Problém je v tom automaticky.

Pokud vam pada build v CI toolu, tak sorry ale to neznamena, ze budete neco programovat v Mavenu. To mate blbe nakonfigurovany ten vas tool. CI uz jsem konfiguroval nekolik a pokazde je na vine spatna konfigurace CI, rozhodne za to nemuze Maven - v pomku nechci mit ani jednu jedinou malou zminku ohledne CI.
Já zmínku o CI nechci mít vůbec nikde. CI je pro mne nástroj, který automaticky spouští úlohy buildu. Pokud musím nějak konfigurovat CI, asi mám špatný buildovací nástroj.

ted uz i chapu, proc chcete do buildu davat neco z VCS - vy mate totiz zblastlene to vase CI. Rozumna CI pipeline umi ukazat, jaky commit se zrovna buildi. To je vas problem, ze to chcete programovat sam.
Já jsem nepsal nic o zobrazování v CI. Chci mít číslo verze a číslo commitu v sestavené aplikaci, aby to uměla zobrazit ta aplikace.

Vsak to rikam - to raci prejdu rovnou na Python nez Gradle.
Už chápu ten vaše hate na Python. Vy jste se prostě něco naučil používat, a teď nenávidíte cokoli jiného, bez ohledu na skutečné kvality toho nástroje. Takže se držíte svého Springu a Mavenu a vše ostatní je špatně. Co na tom, že Gradle převzal z Mavenu vše dobré a poučil se z jeho chyb, takže je ve výsledku mnohem lepší? Jenom takovou prkotinu, jako spouštěcí wrapper, nemohl Maven vymyslet za tu spoustu let, co existuje, a teprve když s tím přišlo Gradle, najendou se to brzy objevilo i v Mavenu.

Kdyz uz se da zprasit kde co a nema to byt kriterium, tak proc vlastne vubec delat neco v Jave?
Gradle vás nenutí prasit. Naopak vás k prasení nutí Maven, protože vám dává do rukou tak slabé nástroje, že vám nezbývá, než jeho nedostatky nejrůznějším způsobem obcházet. A jakmile něco musíte obcházet, nezbývá vám, než prasit. Kdyby Maven jenom popisoval strukturu projektu, což byla původní idea, asi by vyhovoval a jeho deklarativní povaha by byla výhodou. Ale když má fungovat i jako buildovací nástroj, je prostě slabý.

Jestli se budeme zbavovat veci, protoze jsou "zastarale", a nahrazovat je vecma, ktere nic lepsiho neprinasi, tak to muzu rovnou prejit na Javascript s Node.js.
Já se zbavuju věcí, které považuju za nefunkční, když se místo nich objeví náhrada, která funguje lépe. Což je i případ Mavenu a Gradle. Maven jsem za nefunkční považoval hodně dlouho – myšlenka deklarativního popisu projektu byla skvělá, ale sám Maven jí bohužel opustil velmi brzy, ani obyčejný javovský projekt s jednou třídou nejde pomocí deklarace v Mavenu popsat kompletně. Takže pak nastupují pluginy, které ve skutečnosti od deklarace (co má být výsledkem) ustupují zpět k příkazům (jak se toho má docílit), ovšem pořád se tváří, že je to deklarativní a zapisuje se to v XML. A to prostě nefunguje. Autoři Gradlu si správně uvědomili, že každý build je jiný a je pro to potřeba dát do ruky vývojářům plnohodnotný programovací jazyk, zároveň to ale díky Groovy DSL dokázali nádherně propojit s deklarativním zápisem. Takže když se vejdete do nějakých standardních šablon, používáte deklarativní popis projektu, ale jakmile potřebujete vybočit mimo (což dříve nebo později potřebuje každý), nic vám nebrání. Dokonce ani nemusíte nic měnit, jenom se na ten původní deklarativní zápis začnete dívat jako na příkazy. Už jenom tohle propojení deklarativního a imperativního přístupu je geniální. Že prostě do toho seznamu závislostí kdykoli můžu přidat if a do něj jakoukoli podmínku chci.