Java i C# mě už delší dobu živí, tak přidám své €0.02.
Zmíněný VS Code je postavený na frameworku Electron, jedná se tedy o embedovaný webový prohlížeč + hromada JavaScriptu (TypeScriptu). Výsledkem je IDE, které je pomalé a těžkopádné na cokoliv většího než školní/domácí projektíky. A ano, je to horší jak Java aplikace jak rychlostí, tak spotřebou paměti
. Tak a teď se do mě pusťte :-D . .Net Core je v současnosti zaměřený spíše na tvorbu serverových aplikací - web a REST webové služby. Loni, když jsem se na to díval víc, SOAP to umělo volat, ale ne vytvářet, což je v enterprise sféře problém. Na desktop nebo SOAP je potřeba Mono.
Java má mezi linuxovou komunitou dost špatnou pověst hlavně díky tomu, že desktop aplikace napsaná ve Swingu vypadá ve vyšperkovaném Gnome nebo KDE jako pěst na oko, zpravidla dlouho startuje a působí dost "utahaně" (např. response na stisk tlačítka je delší než u C++ aplikace). Tohle je dáno především tím, že uživatelské rozhraní je nejméně přenositelná část aplikace a linuxových desktop uživatelů je poskrovnu, především v businessu. Pokud někdo píše desktop aplikaci v Javě, obvykle se zaměří na Windows a Mac, Linux nechá stranou - když to běží, tak to běží, OK, kašlat. To samé platí o základní knihovně a celém OpenJDK. V Java světě je běžné mít vývoj na Windows/Mac a aplikační server na linuxu. Tomu odpovídá i to, na co se zaměřují vývojáři OpenJDK. Starty Javy na linuxu taky bude řešit málokdo z vývojářů JDK, narozdíl od Windows nebo Macu.
V linux desktopu dominuje C a C++. Naučit se dobře C++ je mnohem těžší než naučit se dobře Javu či C# a to je zase těžší, než naučit se dobře Python. Skriptovací jazyky jako Python mají výhodu v tom, že se v něm dá kód napsat mnohem rychleji než v ostatních zmíněných. Problém nastává při údržbě a rozvoji něčeho většího. Pokročilé nástroje pro refaktoring kódu, profiling, orientaci ve velkých projektech či dokumentaci/změny základní architektury a testování nejsou ani v PyCharmu, natožpak lightweight IDE či editorech. Budeš mít na svých projektech 20+ lidí a stráví ty projekty 5+ let ve fázi "rozvoj a údržba", jak je běžné v Java/C#/mnohých C++ projektech? Pokud ne, rozhodně bych neměl strach z Pythonu. Python má sice Global Interpreter Lock (běží vždy jen jedno vlákno z procesu; musí se obcházet buď přes multiprocessing knihovnu, která forkne celý interpret nebo přes vlastní C kód), není z nejrychlejších a garbage collector oproti tomu, co je v Javě nebo C#, je výsměch ... ale ... většina Python kódu jenom "lepí" dohromady C/C++ knihovny. Podívej se třeba na NumPy - velmi rychlá numerická knihovna, při jejímž použití máš výpočty podobně rychlé, jak kdybys to napsal všechno v C++. Od GUI frameworků pro Python nelze čekat zázraky, ale vybrat se dá - hlavně pokud Tě nezajímá, jestli Tvoje aplikace potom poběží na Win nebo Mac. Nejoblíbenější webový framework pro Python je Django. Má LTS 2 roky, security 3 - pro enterprise nepoužitelné, pro vlastní projekty by to mohlo stačit. Křivka učení Djanga je úplně někde jinde než Springu nebo MS MVC. A number crunching je v Pythonu také v pohodě díky NumPy. V práci mám kolegy, datové analytiky, kteří používají právě Python a NumPy. Na napsání algoritmů, které vevnitř volají C++ knihovnu a toho kódu navíc není extra moc (ta jejich práce je napsat to správně, ne napsat velké množství kódu), je perfektní.
Pro Python je k dispozici i slušné IDE (PyCharm), byť nedosahuje kvalit IntelliJ nebo Visual Studia. Pro .Net Core je k dispozici Rider, též od JetBrains - sice není zadarmo, ale mnohem lepší volba, než VS Code.
Jinak přechod z C# na Javu (a zpět) není nic hrozného a virtuální mašina Javy na linuxu běží lépe než Mono, které bylo tlačené na Mac a mobily, ostatní platformy přišly trochu zkrátka. .Net Core hodně těží z Mona. Umělé benchmarky sice říkají, že jsou srovnatelné, ale já jako Javista umím napsat benchmark, který dokáže, že Java je 2x rychlejší než C :-P .
Důležité je, co chceš programovat. Jestli jenom malé svoje/školní projekty, které nebudou zahrnovat desktop aplikace (případně uděláš GUI v Electron Frameworku jak VS Code - např. F# plugin je napsaný v F# a běží na pozadí jako REST služba, GUI je TypeScript a embedovaný Chrome) a chceš jít cestou C#, pak .Net Core není špatná volba. Ale jestli nemáš rád MS a Windows, poohlédl bych se po něčem jiném - Java nebo Python. Java je general purpose a hodně oblíbená v enterprise sféře - naučit se používat velká IDE jako Eclipse nebo IDEA případně profilery je běh na dlouhou trať, jsou to profesionální nástroje. Není to záležitost několika dnů. Pokud Tě láká mít vidinu stálého jobu někde v korporaci, Java je cesta. Chceš-li vytvářet menší aplikace s malým počtem kolegů či sám a s krátkým životním cyklem, nechceš spíš zkusit právě Python?