Seriozní porovnání .NETu a Javy

Jano7

Re:Seriozní porovnání .NETu a Javy
« Odpověď #90 kdy: 31. 01. 2018, 15:46:08 »
Citace
4. Nemusím pořád testovat na null, můžu použít ?

V Jave môžme (v odôvodnených prípadoch) použiť Optional, Kotlin prináša elvis operátor. Kotlin bude
(s istou pravdepodobnosťou) poračovateľom Javy. Je to v podstate vylepšená Java.

Kód: [Vybrat]
val l: Int = if (b != null) b.length else -1
val l = b?.length ?: -1

Citace
5. Nemusím umět X různých backendových a frontendových frameworků, stačí mi komponentový Asp.net a .net mvc Restový, k tomu WCF, kde mám pod jednou střechou security, soap, rest a dalšiˇ věci. V Javě je to katastrofa kolik tam toho je.

To samozrejme nemusia ani Java programátory; right toot for the right job.

Citace
6. S ASP.NET a visualkem můžu i já, který se moc neorientuju ve frontendu, udělat z templatu pěkný frontend. V Javě jsem odsouzený k tomu používat Bootstrap a podobné věci.

Java má componentovo orientované frameworky, medzi najlepšie patrí Vaadin. Tam netreba
prakticky vôbec používať JavaScript, CSS, HTML.

Citace
7. Ke všem asp.net frameworkům je pořádná dokumentace, ne jako u Springu v Javě.

Prečo si to myslíš? Exitujú dve rozsiahle biblie Springu, plus ďalšie desiatky špecializovaných kníh.
Rozsiahla referenčá príručka a súbor guides. Ďalej množstvo príkladov na Githube.

Citace
8. Můžu dělat pořádné desktop aplikace. V Javě měl Swing problémy s performance, nevím jak je na tom Java FX.

Swing patrí medzi najlepšie desktop GUI knižnice vôbec. Problémy boli vtedy, ak boli
Swing aplikácie spúšťané na strojoch s nedostatočnými zdrojmi (Java vo viacerých oblastiach
predbehla dobu) a keď neboli správne programátormi vyriešené dlhotrvajúce úlohy;
t.j. úlohy sa spúšťali v hlavnom vlákne aplikácie. Veľmi silno pochybujem, že C# GUI
 knižnice sú rýchlejšie ako Swing. Skôr by som stavil na opak.

Citace
Ale celkově prostě mi ten .NET příjde podstatně dál. Já vlastně už nevím žádný pořádný důvod, proč dělat v Javě.

.NET je z veľkej časti kópiou Javy, samozrejme, oni to tam potom vo viacerých oblastiach
vylepšili. Je to ako keď Japonci rozoberali americké autá a spotrebiče na súčiastky a začali
 ich postupne vylepšovať. OK, ľudia sa inšpirujú inými, ale treba UZNAŤ bezpočet inovácií,
ktoré priniesla do sveta Java. Odkiaľ sú Hadoop, ElasticSearch, Maven?


Jano7

Re:Seriozní porovnání .NETu a Javy
« Odpověď #91 kdy: 31. 01. 2018, 16:06:02 »

Citace
Mrtvé jsou AWS, Swing, teď je Java FX a už jsem zase někde četl, že se to nepoužívá.

Swing určite nie je mŕtvy. On ani nikdy nebol príliš na očiach, pretože sa v ňom robia bizniss aplikácie.
Všetky IDE od JetBrains sú napríklad vo Swingu: IntelliJIDEA, PHPStorm, či CLion. Vývoj Swingu bol, 
ukončený, ale to neznamená, že sa v ňom neprogramujú aplikácie. Vo svojej oblasti len veľmi ťažko
nájde konkurenta.

Citace
Navíc Spring ani Java EE pořád nemá vyřešený redeployment, potřebuješ JRebel. Redeployment má vyřešený: .NET, PHP, Python, Play framework. Všechno, jen ne Java.

Neviem čo sa myslí pod poriadne. Spring má v základnej zostave dev-tools, ktorý má redeployment.
Ďalej tam je Spring loaded, ktorý je robustnejší.

Citace
Co ty další frameworky? Vaadin, JSF, Struts,  GWT, Wicket... boože. X různých aplikačních serverů pro Java EE.

Struts patril medzi pionerske projekty; v tej dobe sa v PHP varili špagety a Windows tam mal najeké ASP
JScript či čo. V Jave sa už uvažovalo o robustnom vývoji webových aplikácií a práve to priniesol ako prvý Struts.
Naň potom nadväzovali ďalšie Frameworky. JSF, Vaadin, GWT a Wicket sú kompenontovo orientované webové
frameworky, a Stripes, Struts, Spring MVC, chystaný MVC 1.0 sú action-oriented, Jersey, ReastEasy atď sú restové.
Každý z nich vypĺňa nejaký trhový výklenok, resp. vznikol ako vylepšenie predchádzajúceho frameworku.
Isteže je jednoduchšie mať pokope jeden balík. Plne to chápem, tiež mám z toho často veľkú hlavu ale
jedno riešenie sa nedá použiť pre všetky možné situácie v praxi. Ale tam kde sú inovácie, sú aj rôzne alternatívy.
Situácia nie nepodobná Linuxovým distribúciám.

Citace
Asi 5 různých logovacích frameworků, kdejaká knihovna používá jiný, protože ten ve standardní knihovně je shit.

Logovanie patrí medzi slabiny Javy. (Ešte horšie je na tom testovanie. Tam dúfam JSpock nahradí celý ten guláš.
Ale to je tak vždy, keď niekto sa púšťa do nových vecí, a nemá od koho kopírovať.

Jano7

Re:Seriozní porovnání .NETu a Javy
« Odpověď #92 kdy: 31. 01. 2018, 16:31:47 »
Citace
a uz niekolko rokov nic nove do javy neprislo. oproti tomu, taky .Net sa neustale vyvija, ide dopredu. Vsetko je medzi sebou uzkou previazane (C#, Entity Framework, Azure, MSSQL...)

Hmm, tak Java už vyše dvadsať rokov žije v znamení prudkého rozvoja a inovácií. Bezpočet knižníc,
frameworkov, ideí pochádzajú z Java. (Z historického hľadiska pravdepodnobne viaceré z nich mali
pôdov v ešte starších technológiách.) Stačí sa pozrieť na Apache Software foundation, koľko je tam
Java technológií. Okrem Javy 8, 9, prináša Java ekostystém v poslednej dobe nový programovací jazyk,
ktorý pravdepodobne nahradí Javu v mnohých oblastiach (Kotlin), vynorilo sa nové špičkové IDE
(IntelliJIDEA), Reaktívne programovanie, Microservices, Spring Cloud, Spring Social, Servlet 4
novinky, všetky možné dátové úložiská ako Cassandra, MongoDB a pod. Je toho požehnane.

Re:Seriozní porovnání .NETu a Javy
« Odpověď #93 kdy: 31. 01. 2018, 17:32:00 »
Ako spravne vystihujes aj Java ma svoje problemy ... ale ... furt je to lepsie ako NET.

Nehovorim, ze ADO.NET je mrtvy. Ale predtym tam bol iba ADO a ten je mrtvy. Pouzival sa napr. pri skriptovani z WSH (VBscript, JScript, ...) a bol nahradeny s ADO.NET, ktory je iny.

Trvalo mi urcity cas, kym som si na MS platforme navykol na ich jazyk VBScript a teraz by som mal pouzivat zase ich novy nepodarok PowerShell ?
Preto, prve co urobim,  si vzdy na windows nainstalujem MSYS, kde mam bash a ine tooly, aby sa v tom dalo vobec nieco robit.
Rozdiel v Linuxe a vo Windowse je v tom, ze ked si nainstalujes beznu ditribuciu Linux, tak tam mas vsetko, aby sa v tom dalo zmysluplne robit. Naproti tomu ked nainstalujes Windows nemas tam absolutne nic. Par dalsich dni ti zaberie, kym zistis co ti este chyba a nainstalujes si to.
Schvalne, skus si porovnat Windows a Linux ako rychlo na tom rozbehas bezne veci ako git, docker, elastic, ....

Windows uz nema buducnost. NET je pre windows a teda nema tiez  buducnost.

https://developers.redhat.com/topics/dotnet/

Vy jste se vším nějak rychle hotový.

Re:Seriozní porovnání .NETu a Javy
« Odpověď #94 kdy: 31. 01. 2018, 17:42:33 »
2. Nepodporuje kovariantní návratové typy, to jsem vcelku čuměl, nemůžu odělat override metody a vrátit potomka návratového typu. To je dost velký problém, jak mám udělat abstraktní oop návrh když tohle nejde.
Ale podporuje, to co si napisal je polymorfizmus, vies vratit potomka. Ak myslis kovariantne a intravariantne genericke typy, tak tie sa v generiksoch definuju pomocou Foo<in T>, Foo<out T>.
Ne, to co popsal, jsou skutečně kovariantní návratové typy. Nejde o to, že metoda vrací instanci potomka, ale o to, že metoda na zděděné třídě deklaruje, že bude vždy vracet potomka. Takhle:

Kód: [Vybrat]
class Mlade {
}

class Stene extends Mlade {
}

class Samice{
  Mlade porod() {return null;};
}

class Fena extends Matka {
  @Override
  Stene porod() {return null;};
  //tohle bez kovariantních návratových typů nejde, bez nich musí být návratový typ překryté metody shodný s návratovým typem překrývané metody
}

Kontrakt předka je zachován, ale když někde použijete přímo třídu potomka, máte přesnější definici návratového typu.


jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #95 kdy: 31. 01. 2018, 19:52:23 »
Citace
vynorilo sa nové špičkové IDE
(IntelliJIDEA), Reaktívne programovanie
No ved hovorim, java zaspala dobu. Reactive extension ma .net uz davno, spickove IDE ala Visual Studio tu je uz dlho.
Citace
Veľmi silno pochybujem, že C# GUI
 knižnice sú rýchlejšie ako Swing. Skôr by som stavil na opak.
Asi mate pravdu, a preto sa LOB aplikacie povacsine pisu vo WPF. Nehovoriac o tom, ze PWF vyuziva directx. Ktory cvok by sahal po springu, ked by si mohol vybrat wpf.

Re:Seriozní porovnání .NETu a Javy
« Odpověď #96 kdy: 31. 01. 2018, 20:31:28 »
spickove IDE ala Visual Studio tu je uz dlho
A proto existuje ReSharper, aby se to špičkové Visual Studio alespoň přiblížilo IntelliJ Idea? Mimochodem, IntelliJ Idea se „vynořila“ už v roce 2001, to možná někteří zdejší diskutující ani nebyli na světě…

jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #97 kdy: 31. 01. 2018, 20:52:40 »
no pozor na to. Ani ten resharper nie je vsemocny nastroj :). Visual Studio je pouzitelne je aj bez neho. To, ze nastava chyba medzi stolickou a klavesnicou, za to uz VS nemoze ;).

Re:Seriozní porovnání .NETu a Javy
« Odpověď #98 kdy: 31. 01. 2018, 21:07:30 »
Ale jo, použitelné je kde co. Třeba jehličí místo lopuchu. Ale zrovna srovnání IntelliJ Idea a Visual Studia je jednoznačně ve prospěch Idey, i když VS je použitelné, možná i docela slušně použitelné.

jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #99 kdy: 31. 01. 2018, 21:46:10 »
vsetko je to o prioritach a preferenciach.

anonym

Re:Seriozní porovnání .NETu a Javy
« Odpověď #100 kdy: 31. 01. 2018, 22:03:55 »
Ale jo, použitelné je kde co. Třeba jehličí místo lopuchu. Ale zrovna srovnání IntelliJ Idea a Visual Studia je jednoznačně ve prospěch Idey, i když VS je použitelné, možná i docela slušně použitelné.

Idea je dobra, ale až zase tak? Narazil jsem u ni v praci 3 zasadni problemy:

1. Dokazala si pokazit fungujici Make u velkeho Maven projektu. Proste se ji nejak samovolne kazily interne resolvnuté zavislosti z Mavenu a musel se udelat Clean cache, po kterem nasledovalo asi 20min zotavování. Dopady Clean cache and restart asi znáš.

2. Má naprd životně důležitou utilitku pro hledání Call hierarchíí. Je blbě udělaná a proto je pomalá jako prase a umí se i zacyklit. Strávil jsem týden psaním své vlastní utility pro hledání call hierarchíí kvůli tomu. Na githubu byly jen samé polofunkční řešení.

3. Má bug v podoře gitu, který umí pokazit merge. Celý jeden tým kvůli tomu musel ze strachu používat Tortoise git.

Ale jinak je Ide super, asi nejlepší ide co jsem měl, leč existuje JetBrains Rider a to je idea pro c# ;)

harrison314

Re:Seriozní porovnání .NETu a Javy
« Odpověď #101 kdy: 01. 02. 2018, 07:23:58 »
Swing patrí medzi najlepšie desktop GUI knižnice vôbec. Problémy boli vtedy, ak boli
Swing aplikácie spúšťané na strojoch s nedostatočnými zdrojmi (Java vo viacerých oblastiach
predbehla dobu) a keď neboli správne programátormi vyriešené dlhotrvajúce úlohy;
t.j. úlohy sa spúšťali v hlavnom vlákne aplikácie. Veľmi silno pochybujem, že C# GUI
 knižnice sú rýchlejšie ako Swing. Skôr by som stavil na opak.
To, ze mala dektop aaplikacia zozrala celu ramku nepovazujem za predbehnutie dobry :D

Swing mozno vtdy bol super, no ked prislo WPF, tak to bol ako iny svet, kodenie UI zrazu zacalo byt deklarativne a bola to radost.

spickove IDE ala Visual Studio tu je uz dlho
A proto existuje ReSharper, aby se to špičkové Visual Studio alespoň přiblížilo IntelliJ Idea? Mimochodem, IntelliJ Idea se „vynořila“ už v roce 2001, to možná někteří zdejší diskutující ani nebyli na světě…
ReSharper hlavne zral systemove zdroje, to na co ste pred par rokmi potrebovali reSharper, dnes zvlada Visual Studio vo free verzii nativne. Niektore veci mi tam chybali, no na to sa daju najst pluginy. Povezdme, ze Roslin ako "compiler as a service" bol genialny napad.

2. Nepodporuje kovariantní návratové typy, to jsem vcelku čuměl, nemůžu odělat override metody a vrátit potomka návratového typu. To je dost velký problém, jak mám udělat abstraktní oop návrh když tohle nejde.
Ale podporuje, to co si napisal je polymorfizmus, vies vratit potomka. Ak myslis kovariantne a intravariantne genericke typy, tak tie sa v generiksoch definuju pomocou Foo<in T>, Foo<out T>.
Ne, to co popsal, jsou skutečně kovariantní návratové typy. Nejde o to, že metoda vrací instanci potomka, ale o to, že metoda na zděděné třídě deklaruje, že bude vždy vracet potomka. Takhle:

Kód: [Vybrat]
class Mlade {
}

class Stene extends Mlade {
}

class Samice{
  Mlade porod() {return null;};
}

class Fena extends Matka {
  @Override
  Stene porod() {return null;};
  //tohle bez kovariantních návratových typů nejde, bez nich musí být návratový typ překryté metody shodný s návratovým typem překrývané metody
}

Kontrakt předka je zachován, ale když někde použijete přímo třídu potomka, máte přesnější definici návratového typu.

Podobneh chovanie viem v C# dosiahnut pomocou implementacie kovariantneho generickeho interface.
S tym vysie uvedenym som sa v praxy este nestretol, ake to ma vyuzitie a prakticke dopady?

AKo mne osobne by v Jave chabli skutocne  genericke typy (ak pisete infrastrukturny kod zo skutocnou generikou je svet ovela lahsi) a tiez som v nej mal neskutocny posit neslobody a kod v nej bol vzdy dlhsi a ukecanjsi.

Re:Seriozní porovnání .NETu a Javy
« Odpověď #102 kdy: 01. 02. 2018, 14:49:17 »
to na co ste pred par rokmi potrebovali reSharper, dnes zvlada Visual Studio vo free verzii nativne. Niektore veci mi tam chybali, no na to sa daju najst pluginy. Povezdme, ze Roslin ako "compiler as a service" bol genialny napad.
Vím, že se VS za poslední dobu docela zlepšilo. Šlo mi o to, že to není tak, jak to bylo původně formulováno – že VS je skvělé IDE, které teď Idea dohání. Je to přesně naopak, Idea je špička už spoustu let, a VS se tomu v poslední době přibližuje.

Podobneh chovanie viem v C# dosiahnut pomocou implementacie kovariantneho generickeho interface.
S tím ale musí počítat i ten předek, ne?
S tym vysie uvedenym som sa v praxy este nestretol, ake to ma vyuzitie a prakticke dopady?

AKo mne osobne by v Jave chabli skutocne  genericke typy (ak pisete infrastrukturny kod zo skutocnou generikou je svet ovela lahsi)
Souhlasím a vadí mi, že to (pokud vím) není mezi změnami, o kterých by se reálně uvažovalo.

tiez som v nej mal neskutocny posit neslobody a kod v nej bol vzdy dlhsi a ukecanjsi.
Podle mne svoboda do zdrojových kódů nepatří. To není umělecké dílo, kde se bude někdo kochat, co originálního tam kdo vymyslel. Mně vadí, když vidím v Groovy 10. způsob zápisu volání metody a musím nad tím přemýšlet a uvědomit si, že tohle je také volání metody.

Jano7

Re:Seriozní porovnání .NETu a Javy
« Odpověď #103 kdy: 01. 02. 2018, 15:47:51 »
Citace
No ved hovorim, java zaspala dobu. Reactive extension ma .net uz davno, spickove IDE ala Visual Studio tu je uz dlho.

Spring a Java EE nedávno zakomponovali reaktívne programovanie do svojich knižníc; ale RxJava je tu už
dlho ako externý modul. Asi tak dlho, ako ten .NET. Takže určite Java nazaspala dobu.

Citace
Asi mate pravdu, a preto sa LOB aplikacie povacsine pisu vo WPF. Nehovoriac o tom, ze PWF vyuziva directx. Ktory cvok by sahal po springu, ked by si mohol vybrat wpf.

Predpokladám, že bolo myslené Swing, nie Spring. Ktorý cvok? Všetci tí, ktorí nechcú customer lock-in,
ktorí potrebujú ozajstnú multiplatformovú GUI desktop aplikáciu. Ďalej vývojári z krajín ako sú Čína,
Rusko, Brazília, kde sa strategicky prechádza na open-source kvôli špionáži.

Bez netriviálnych zásahov nie sú WPF aplikácie portabilné ani na Windows systémoch; čo som si letmo pozeral,
tak layout manažéry natvrdo v pixeloch nastavujú vzdialenosti medzi komponentami. Skúste si spustiť komplexnejší
layout vytvorený vo WPF na malom rozlíšení, strednom a potom veľkom.

Citace
To, ze mala dektop aaplikacia zozrala celu ramku nepovazujem za predbehnutie dobry :D
Swing mozno vtdy bol super, no ked prislo WPF, tak to bol ako iny svet, kodenie UI zrazu zacalo byt deklarativne a bola to radost.

Swing bol vytvorený okolo roku 1997! Na vtedajších PC to proste nešlo. V Sun to vyvýjali na
svojich silných pracovných staniciach. Muselo prejsť viac rokov, kým boli všeobecne dostupné PC, ktoré
mali dostatok prostriedkov na Java desktop aplikácie. Windows 7, 10 tiež nepustíte na starších počítačoch,
ten moloch zvaný Visual Studio duplom nie. Ja si za chvíľu stiahnem NetBeans, naprogramovaný vo Swingu,
hneď to bez cavykov spustím na hociktorom OS, a hneď môžem kódiť. A aplikácia vo Swingu mi pôjde na všetkých platformách.

Swing je to špičková technológia, ktorá má strmú krvivku učenia. Kto dobre pozná Swing, nepotrebuje
barličky vo forme klikacích nástrojov.

Re:Seriozní porovnání .NETu a Javy
« Odpověď #104 kdy: 01. 02. 2018, 16:00:22 »
Citace
No ved hovorim, java zaspala dobu. Reactive extension ma .net uz davno, spickove IDE ala Visual Studio tu je uz dlho.

Spring a Java EE nedávno zakomponovali reaktívne programovanie do svojich knižníc; ale RxJava je tu už
dlho ako externý modul. Asi tak dlho, ako ten .NET. Takže určite Java nazaspala dobu.

Citace
Asi mate pravdu, a preto sa LOB aplikacie povacsine pisu vo WPF. Nehovoriac o tom, ze PWF vyuziva directx. Ktory cvok by sahal po springu, ked by si mohol vybrat wpf.

Predpokladám, že bolo myslené Swing, nie Spring. Ktorý cvok? Všetci tí, ktorí nechcú customer lock-in,
ktorí potrebujú ozajstnú multiplatformovú GUI desktop aplikáciu. Ďalej vývojári z krajín ako sú Čína,
Rusko, Brazília, kde sa strategicky prechádza na open-source kvôli špionáži.

Bez netriviálnych zásahov nie sú WPF aplikácie portabilné ani na Windows systémoch; čo som si letmo pozeral,
tak layout manažéry natvrdo v pixeloch nastavujú vzdialenosti medzi komponentami. Skúste si spustiť komplexnejší
layout vytvorený vo WPF na malom rozlíšení, strednom a potom veľkom.

Citace
To, ze mala dektop aaplikacia zozrala celu ramku nepovazujem za predbehnutie dobry :D
Swing mozno vtdy bol super, no ked prislo WPF, tak to bol ako iny svet, kodenie UI zrazu zacalo byt deklarativne a bola to radost.

Swing bol vytvorený okolo roku 1997! Na vtedajších PC to proste nešlo. V Sun to vyvýjali na
svojich silných pracovných staniciach. Muselo prejsť viac rokov, kým boli všeobecne dostupné PC, ktoré
mali dostatok prostriedkov na Java desktop aplikácie. Windows 7, 10 tiež nepustíte na starších počítačoch,
ten moloch zvaný Visual Studio duplom nie. Ja si za chvíľu stiahnem NetBeans, naprogramovaný vo Swingu,
hneď to bez cavykov spustím na hociktorom OS, a hneď môžem kódiť. A aplikácia vo Swingu mi pôjde na všetkých platformách.

Swing je to špičková technológia, ktorá má strmú krvivku učenia. Kto dobre pozná Swing, nepotrebuje
barličky vo forme klikacích nástrojov.

Klikací nástroje ale nejsou žádná berlička nebo ostuda je používat; ulehčují práci, stejně jako ta vaše Swing aplikace, nebo jí také říkáte berlička?