Seriozní porovnání .NETu a Javy

Lopatin

Re:Seriozní porovnání .NETu a Javy
« Odpověď #60 kdy: 30. 01. 2018, 17:03:59 »
Tak pokud chceš přejít z Javy na .NET, tak je to v zásadě stejné. Zásadní je rozdíl v tom, že .NET je pořád hodně Windows centric, kdežto Java určitě ne a mnohem častěji ji člověk potká na Linuxu/Unixu než Windows. .Net core je sice multiplatformní už z podstaty, ale většina nasazení, se kterými člověk přijde do styku stejně pojedou na Windows.

Další věc je ekosystém knihoven a nástrojů okolo. Toho je v Javě mnohem více, protože zkrátka má za sebou delší historii a silnější a větší komunitu.

Za mě tedy jestli umíš slušně Javu, tak bych vydržel u Javy. Práce jako Java vývojář seženeš minimálně stejně, spíše více jak .NET vývojář a stejně nebo lépe placenou.

Spíš bych se přiučil javascript a trochu FE, protože ten teď jede ze všeho nejvíc, to se hodí mnohem více než přecházet na .NET.


jpu

Re:Seriozní porovnání .NETu a Javy
« Odpověď #61 kdy: 30. 01. 2018, 17:30:30 »
Citace
protože zkrátka má za sebou delší historii a silnější a větší komunitu.
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...)
Citace
Spíš bych se přiučil javascript a trochu FE
Pockat, ale on nechcel byt nejaky budiznicema, jeden z mnohych, ktori ovladaju XYZ frameworkov, ale dokopy nic, lebo nemaju sancu stihat sa to ucit.

sadsad

Re:Seriozní porovnání .NETu a Javy
« Odpověď #62 kdy: 30. 01. 2018, 17:45:20 »
a uz niekolko rokov nic nove do javy neprislo ...

Toto mozes ako povedat? :D Java 8, Java 9 ... nic nove? wtf ... cely ekosystem okolo toho, co by si akoze chcel?

Karásek, zvědavý invalida

Re:Seriozní porovnání .NETu a Javy
« Odpověď #63 kdy: 30. 01. 2018, 19:53:35 »
Připadá mi to jako velmi rozporuplná argumentace. Ale to je určitě tím, že programování nerozumím. Kdybys psal, že je to nečisté, nebo proti programátorskému pánuoopbohu, tak bych to chápal. Ale že je to ZCELA zbytečné...

Null je v C# i v Javě, o tom teď nebyla řeč.

Řeč byla o syntaktickém cukru, kterého má Java méně než C#. Podle mne je to správně.

Já nemluvil o null jako takovém. Ale o zacházení s ním - a o nástrojích, které mi tu práci s ním ulehčují. Čili přesně o tom syntaktickém cukru - který je podle tebe zcela zbytečný.
Ale vlastně je to logické, pokud svou vlastní argumentaci považuješ za konzistentní, že jsi moje podobenství nepochopil.

anonym

Re:Seriozní porovnání .NETu a Javy
« Odpověď #64 kdy: 30. 01. 2018, 20:25:22 »
No ono ta Java 8 zase takové terno není. Přibyly lambdy, streamy a Optional. Lambdy nejsou zase takové terno. Streamy... viděl jsem, jak to vypadalo, když Indové dostali jasně za úkolo používat streamy, protože je to asi velice profesionální. Vznikl z toho solidní nepřehledné běsy.

Optional taky nic moc, protože to má hrozně ukecanou syntax, viz:

Kód: [Vybrat]
// safe, ugly, omission-prone
if (project != null) {
    ApplicationType applicationType = project.getApplicationType();
    if (applicationType != null) {
        String typeDirName = applicationType.getTypeDirName();
        if (typeDirName != null) {
            System.out.println(typeDirName);
        }
    }
}

// let's assume you will get this from your model in the future; in the meantime...
Optional<Project> optionalProject = Optional.ofNullable(project);
// safe, java 8, but still ugly and omission-prone
if (optionalProject.isPresent()) {
    ApplicationType applicationType = optionalProject.get().getApplicationType();
    Optional<ApplicationType> optionalApplicationType = Optional.ofNullable(applicationType);
    if (optionalApplicationType.isPresent()) {
        String typeDirName = optionalApplicationType.get().getTypeDirName();
        Optional<String> optionalTypeDirName = Optional.ofNullable(typeDirName);
        if (optionalTypeDirName.isPresent()) {
            System.out.println(optionalTypeDirName);
        }
}

// safe, prettier
Optional<String> optionalTypeDirName = optionalProject
        .flatMap(project -> project.getApplicationTypeOptional())
        .flatMap(applicationType -> applicationType.getTypeDirNameOptional());
optionalTypeDirName.ifPresent(typeDirName -> System.out.println(typeDirName));

A ted to same C#:
Kód: [Vybrat]
var typeDirName = project?.ApplicationType?.TypeDirName;
if(typeDirName != null)
  System.Console.WriteLine(typeDirName);

Jinak, jestli někomu z Javistu připadá to použití Streamu jako pěknější a přehlednější, než původní klasické checkování na null, tak by si měl zajít k doktorovi nebo najít holku.


Kit

Re:Seriozní porovnání .NETu a Javy
« Odpověď #65 kdy: 30. 01. 2018, 20:47:03 »
Já nemluvil o null jako takovém. Ale o zacházení s ním - a o nástrojích, které mi tu práci s ním ulehčují. Čili přesně o tom syntaktickém cukru - který je podle tebe zcela zbytečný.
Ale vlastně je to logické, pokud svou vlastní argumentaci považuješ za konzistentní, že jsi moje podobenství nepochopil.

O souvislosti null se syntaktickým cukrem jsem nepsal. Spojil jsi dva mé příspěvky, které byly o dvou různých aspektech. Jeden byl o podobnosti Javy a C# (nevhodnost používání null v OOP) a druhý byl rozdílech Java vs. C# (boilerplates vs. syntaktický cukr).

Re:Seriozní porovnání .NETu a Javy
« Odpověď #66 kdy: 30. 01. 2018, 21:11:20 »
Jinak, jestli někomu z Javistu připadá to použití Streamu jako pěknější a přehlednější, než původní klasické checkování na null, tak by si měl zajít k doktorovi nebo najít holku.
Tady musím všechny čtenáře upozornit: to co zde anonym předvedl je naprostá pitomost. I když uvážíme že by se dalo napsat méně humpolácky (pravidlo číslo 1: pokud používám isPresent+get, tak to dělám blbě), tak skutečně hromadně nahradit null check pomocí Optional.ofNullable je hovadina (neplatí pro outsourced IT dělníky z Indie i odjinud, kteří jsou placeni od hodiny nebo dokonce LOC).

Jinak ?. operátor je skvělá věc a velmi by se v Javě hodil, stejně jako Elvis operátor ?:

anonym

Re:Seriozní porovnání .NETu a Javy
« Odpověď #67 kdy: 30. 01. 2018, 21:20:21 »
Tady musím všechny čtenáře upozornit: to co zde anonym předvedl je naprostá pitomost.

Původní článek:

https://dzone.com/articles/java-8-optional-avoid-null-and
62.10k Views
Comment (22)

Ani jediný kometář neuvadí nic jako: "Ty jsi se dočista zbláznil, jak sis tím streamem proboha pomohl?"



PsychoIT

Re:Seriozní porovnání .NETu a Javy
« Odpověď #68 kdy: 30. 01. 2018, 22:45:23 »
Ten článěk je pěkná blbina, protože "vylepšený" kód není sémanticky to samý jako původní krátky kód kde se nekontroloval null. Původní kód mohl vyhučet na NullPointerException, nový kód ale na nepřítomnost daných objetů nijak nereaguje a tiše pokračuje dál jako by se nechumelilo. To už rovnou stačilo udělat eé a obalit původní kód do try-catch bloku a NullPointerException odchytit a ignorovat. Nový kód by tedy měl vyhodit nějakou jinou výjimku, nebo indikovat neúspěch jinak. Pokud existuje rozumný předpoklad, že by null neměl být nikdy vrácen, je nejlepší nekontrolovat nic a v případě chyby nechat kód zhučet, protože to znamená že je asi něco hodně v nepořádku...

Kit

Re:Seriozní porovnání .NETu a Javy
« Odpověď #69 kdy: 30. 01. 2018, 23:00:37 »
Pokud existuje rozumný předpoklad, že by null neměl být nikdy vrácen, je nejlepší nekontrolovat nic a v případě chyby nechat kód zhučet, protože to znamená že je asi něco hodně v nepořádku...

Přesně. Odchytávání výjimek s jejich následným ignorováním už nadělalo spoustu škod. Když je nechci zpracovat, což zpravidla nechci, je mnohem lepší je nechat propadnout.

anonym

Re:Seriozní porovnání .NETu a Javy
« Odpověď #70 kdy: 30. 01. 2018, 23:10:51 »
Ten článěk je pěkná blbina, protože "vylepšený" kód není sémanticky to samý jako původní krátky kód kde se nekontroloval null. Původní kód mohl vyhučet na NullPointerException, nový kód ale na nepřítomnost daných objetů nijak nereaguje a tiše pokračuje dál jako by se nechumelilo. To už rovnou stačilo udělat eé a obalit původní kód do try-catch bloku a NullPointerException odchytit a ignorovat. Nový kód by tedy měl vyhodit nějakou jinou výjimku, nebo indikovat neúspěch jinak. Pokud existuje rozumný předpoklad, že by null neměl být nikdy vrácen, je nejlepší nekontrolovat nic a v případě chyby nechat kód zhučet, protože to znamená že je asi něco hodně v nepořádku...

https://stackoverflow.com/questions/33287261/null-check-vs-try-catch-when-99-of-the-time-object-is-not-null
https://stackoverflow.com/questions/37960674/null-check-chain-vs-catching-nullpointerexception
https://stackoverflow.com/questions/8621762/java-if-vs-try-catch-overhead

mikrom

Re:Seriozní porovnání .NETu a Javy
« Odpověď #71 kdy: 30. 01. 2018, 23:47:05 »
Dělal jsem poslední 2 roky profesně v Javě a předtím na VŠ v :NETu. Teď uvažuju přejít na .NET ...
Mas smolu, je to tvoje zle rozhodnutie.
NET je primarne zamerany na Windows. Lenze Windows sa s kazdou verziou zhorsuje, napr Windows 10 je z hladiska administracie systemu katastrofa - nevhodna na korporatne pouzitie. Kazdy rozumny clovek/firma pouziva na server Linux a na Linuxe nema NET ziadnu buducnost.
Jasna volba pre buducnost je Java (alebo hociso ine - napr. aj COBOL ale nie .NET ) !!!

Kit

Re:Seriozní porovnání .NETu a Javy
« Odpověď #72 kdy: 30. 01. 2018, 23:52:50 »
Jasna volba pre buducnost je Java (alebo hociso ine - napr. aj COBOL ale nie .NET ) !!!

Kromě COBOLu ještě Fortran, Lisp, Smalltalk, Python, PHP, Haskell, ...

anonym

Re:Seriozní porovnání .NETu a Javy
« Odpověď #73 kdy: 30. 01. 2018, 23:57:11 »
Dělal jsem poslední 2 roky profesně v Javě a předtím na VŠ v :NETu. Teď uvažuju přejít na .NET ...
Mas smolu, je to tvoje zle rozhodnutie.
NET je primarne zamerany na Windows. Lenze Windows sa s kazdou verziou zhorsuje, napr Windows 10 je z hladiska administracie systemu katastrofa - nevhodna na korporatne pouzitie. Kazdy rozumny clovek/firma pouziva na server Linux a na Linuxe nema NET ziadnu buducnost.
Jasna volba pre buducnost je Java (alebo hociso ine - napr. aj COBOL ale nie .NET ) !!!

To už není úplně pravda, MS vydal .NET Core kompletně opensource.

mikrom

Re:Seriozní porovnání .NETu a Javy
« Odpověď #74 kdy: 31. 01. 2018, 00:04:57 »
Jasna volba pre buducnost je Java (alebo hociso ine - napr. aj COBOL ale nie .NET ) !!!

Kromě COBOLu ještě Fortran, Lisp, Smalltalk, Python, PHP, Haskell, ...
ano ale ne .NET