Kam jinam
Java, Node, Python nebo PHP pro business aplikaci?
- Analýza a metaanalýza
- Provozní prostředí
- Shrnutí: Proč PHP vyhrává pro SaaS řešení
- Proč volba Java, Node, PHP, Python a ne jiné?
- Jak volit optimální jazyk pro vibe coding?
Volba jazyka pro vývoj většího systému je komplexním rozhodnutím, které řeší mnoho týmů. V příspěvku shrnujeme argumenty, které přesvědčily nás
Analýza a metaanalýza
Analýza
V rámci analýzy jsme vycházeli z vlastní 30 leté zkušenosti s vývojem u nás ve firmě i našich klientů.
Vyhodnocovali jsme postupy, nástroje, technologie a fungování, které týmy používají, kolik je stojí a kolik stojí vyvinout jednu průměrnou business funkci.
Metaanalýza
Při metaanalýze jsme vyhodnocovali články a příspěvky na téma výběru programovacího jazyka.
Hodnotili jsme u článků jejich stáří, zkušenosti a zaujatost autora i odbornost přístupu k analýze.

Není jazyk jako jazyk
Není PHP jako PHP aneb co bylo v posouzení
Všechna hodnocení PHP se vztahují na PHP běžící v ZendPHP. Neuvažujeme PHP aplikační servery jako např. FrankenPHP.
Nejenom v době, kdy jsme s projektem začínali, ale ani nyní bychom jejich použití neuvažovali. Jak rozebíráme dále, výhoda rychlejšího běhu je vykoupena problémy většími náklady na vývoj i dalšími omezeními, které rozsah tohoto článku přesahují.
Z hlediska našeho hodnocení se použití PHP aplikačního frameworku jeví jako potenciálně užitečné tam, kde je množství hotového kódu. Pokud se začíná s prázdným stolem, dává větší smysl použít od začátku jiný jazyk nejlépe Go.
TypeScript / Node
Situace s Node je nejjednodušší, protože nemá varianty, kromě možnosti nepoužívat poslední verzi. TypeScript používáme hodně, Node server také, takže v tomto případě do hodnocení vstupovaly technologie bez jakéhokoli hendikepu.
Python / Django
Python jsme hodnotili ve spojení s frameworkem Django, se kterým jsme jej také používali. Jiný framework jsme netestovali, ale vzhledem ke klíčovým důvodům pro a proti Pythonu by situaci nezměnil, protože argumenty se týkají Pythonu samotného.
Java
Java měla situaci nejsložitější, protože na rozdíl od ostatních prostředí jsme přímo v Javě webovou aplikaci sami nevyvíjeli. Opíráme se o zkušenosti našich kolegů a projektů, kde jsme byli v různých rolích (analýza, testování), ale ne přímo vývoj.
V rámci hodnocení byla uvažována varianta použití Java s robustní middleware platformou (IBM, Tibco apod.) Jejich přínos pro ekosystém Javy je zásadní, ale nárůst nákladů všech typů nákladů (licence, administrace, vývoj i výkon serveru) s jejich požitím také. Naopak bez jejich použití Java pro servery ztrácí velkou část výhod.
Samotnou Javu a programování v ní známe z oblasti vývoje aplikací.
Výkon
Většina srovnání tvrdí, že Java je výkonnější než PHP. Opírají se většinou o porovnání interpretovaného PHP a kompilované Java. Stále se tak většina srovnání opírá a PHP 5, které bylo skutečně výrazně pomalejší, než Java. Pro PHP 7 už to přestávalo platit a s JIT kompilátorem PHP 8 už hraje PHP prim v tom, že provozní prostředí i samotný kód aplikace je jednodušší.
Kód v Node je výkonnější, zkompilovaný Java script má určitě navrh. Node by v této kategorii vyhrálo.
Přehlednost kódu
Java i PHP jsou v přehlednosti podobné, je možné se přít o detaily. Poměrně významnou výhodou PHP je stručnost, Java vyžaduje cca o 50% více kódu. Když má implementace business objektu kolem 3000 řádek v PHP, tak je nárůst docela znát.
Node pro business funkce v přehlednosti velmi ztrácí. Zatímco v PHP je funkce lineárním kódem, Java Script se utápí ve zpětných voláních díky asynchronnímu zpracování SQL dotazů. Právě přehlednost kódu je jedním ze dvou zásadních důvodů, kde Node ztrácí. A to přesto, že TypeScript bez proměnných s dolary a bez středníků většina programátorů i v našem tým vítá.
Python v přehlednosti ztrácí díky absenci závorek. Milovníci Pythonu teď mohou autory článku kamenovat, ale kdo je zvyklý číst kód od závorky k závorce, tak jasné vymezení bloků postrádá. O automatickém formátování, které v Pythonu rozhodí i logiku aplikace ani nemluvě.
Spolehlivost pro dlouhodobý běh
SaaS aplikace jsou běh na dlouho trať. Jejich návratnost je pomalejší, správa náročnější. Z hlediska výběru programovacího jazyka je klíčové, aby vás prostředí nezradilo nejen při vývoji, ale ani při změnách, které v době výběru ani nejde předvídat.
Se všemi porovnávanými jazyky a ekosystémy je dlouhodobá zkušenost, takže je možné na ní postavit tvrzení, že jde o robustní a spolehlivé řešení. Dlouhodobý běh ale ovlivňuje např. i potřeba restartu, aktualizací, ztráty paměti nebo předvídatelnost chování. Největší vliv na vaše náklady bude mít znalost týmu a schopnost se o prostředí dobře starat.
PHP má nevýhodu v dostupnosti zdrojových kódu přímo na provozním prostředí. Jde o bezpečnostní riziko, které rozhodně není dobré podceňovat ať už z hlediska možnosti neoprávněného zásahu, tak potenciálního ukradení know-how. Z hlediska SaaS aplikace, kdy máte server plně pod kontrolou, jsou ale tato rizika mnohem menší, než pro aplikace nasazované přímo u zákazníka. (Možná řešení existují, ale zde se jimi nezabýváme.)
Pro Javu je v rámci hodnocení hendikepem i její spojení s Oracle. Podobně jako Oracle koupit MySQL a změnil pravidla pro používání i Java je v tomto směru nejistá. Dlouhodobě není jisté, jaké budou náklady na její používání, což při vývoji řešení pro 10 a více let je důležitým rizikem.
Nasazování změn
Všechna prostředí umožňují nasadit změny, rozdíl je, kolik to vyžaduje času a práce.
PHP je v tomto směru jednoznačným premiantem. Java i Node vyžadují kompilaci, zastavení a restart. Pro plynulý chod potřebujete přesměrovat uživatele na jiný server a zpět, nebo počítat s výpadkem. I doba naběhnutí po aktualizaci je výrazně vyšší pro kompilované systémy, než pro PHP s JIT kompilátorem.
Doba restartu není důležitá jenom pro nasazení, ale stejnou roli hraje při vývoji, ladění a testování. Java i další řešení kompilací zvyšují časové náklady na ladění cca o 10% (měřeno na vlastních projektech.) a vyžadují další odborné znalosti a správu pracovního prostředí.
Jednoduchost změna systému a nasazení úpravy je zásadní výhodou PHP. Python může pracovat obdobně, ale pro dosažení rozumného výkonu např. Django, je restart a rekompilace v podstatě nezbytná. Jde o krok, který určitě lidem pod rukama neuděláte, takže případnou rychlou opravu si dobře rozmyslíte (Dobré rozmyšlení rozhodně není na škodu.)
Ze zkušenosti SaaS řešení přes den také v podstatě nikdy neměníme, ale večerní aktualizace PHP backendu proběhne tak, že si jich ani večerní uživatelé nevšimnou. PHP tak umožňuje provoz 24x7, kdy záložní server slouží opravdu jen jako záložní.
Provozní prostředí
Výhody a nevýhody provozního prostředí jsou zásadním rozdílem PHP od Node i Java. Dokonce tak významný, že převáží většinu ostatních argumentů.
Srovnání proti sobě staví hlavní typy aplikací.
On-line hra ve virtuálním světě
Základním atributem on-line hry je, že držíte velký objem dat, které používají všichni hráči. I když je každý hráč někde jinde, v zásadě pracujete s jedněmi daty. Navíc potřebujete odezvu v řádu milisekund.
Podobné priority jako má on-line hra, bude mít např. i sdílená editace dokumentu (i když objem dat bude o několik řádů menší)
Hra i editor budou stále komunikovat a obousměrně přes sokety vyměňovat aktualizace. Data musíte mít stále dostupná a v paměti.
Node server je pro on-line hru optimálním prostředím. Java bude také použitelná, ale PHP ani Python ne, byť každý z jiného důvodů:
- PHP a jeho session jsou pomalé a systém by vedle sebe stejně musel mít engine, který by dělal většinu práce a se kterým by PHP komunikovalo do jiného procesu, což by běh dále zdržovalo.
- Python natolik významně ztrácí ve výkonu, že jiné argumenty nedávají smysl
Jednouživatelská aplikace
Příkladem jednouživatelské aplikace je e-mailový klient, editace dokumentu bez sdílení nebo i hra, která běží primárně v prohlížeči a ne na serveru.
Každý uživatel má svá data, do kterých nikdo jiný nezasahuje a nijak je nesdílí. Rychlost odezvy není tak kritická, jako u on-line her, i když samozřejmě není nedůležitá.
Fungování serveru pro tento typ aplikací není zásadní a všechny varianty budou srovnatelné. Pro rozhodování tak jsou podstatné jiné důvody.
SaaS aplikace
SaaS aplikační framework předpokládá, že v jednom prostředí vedle sebe pracují uživatelé, kteří se o sobě nesmí dozvědět. Mezi jednotlivými klienty musí být nepřekročitelná zeď.
PHP má velmi jednoduché provozní prostředí, protože každé zavolání je samostatný proces, který po obsluze požadavku končí. Už jsme zmínili, že to může být zásadní nevýhodou, ale pro SaaS a to zejména pro segment malých a středních zákazníků jde naopak o významnou výhodu
- V SaaS podobného typu je ideální stateless zpracování. Zajišťuje nejvyšší průchodnost. Zejména pro větší počet izolovaných uživatelů by statefull sessions byly paměťově drahé.
- Požadavky od různě pracujících klientů jsou hodně odlišné. Je tedy výhodou, když má systém efektivní možnost řídit, který kód drží v paměti a který odkládá. To jde JIT kompilátoru nejlépe, protože zpracování session je vždy po velmi krátké době ukončeno. Ostatní prostředí ukončení fakticky nemají a jsou mnohem více závislé na fungování garbage collectoru.
Shrnutí: Proč PHP vyhrává pro SaaS řešení
Výše uvedené argumenty vedly k volbě PHP. I po 5 letech vývoje považujeme volbu za dobrou. Hlavními důvody jsou:
- Rychlost vývoje a přehlednost kódu
- Jednoduchost celého životního cyklu a s ní spojené nejnižší náklady
Hlavní zvažované nevýhody PHP byly:
- Podle recenzí se zdá, že PHP je na ústupu. Bližší posouzení různých recenzentů ale ukazuje, že hodnocení postrádá skutečně kvalitní data (ani my je nemáme)
- Nemožnost zapouzdřit kód tak, aby do něj nebylo možné zasáhnout
- Modernější Node staví na socketové obousměrné komunikaci s klienty a poskytuje v tom proti PHP výrazné výhody
Hlavní nevýhody ostatních zvažovaných řešení:
- Java a middleware: Výrazně vyšší náklady ne celý životní cyklus, výrazné zpomalení (při stejných zdrojích)
- TypeScript a Node: Bylo s PHP velmi vyrovnané a zejména díky přímé socketové komunikaci mělo velkou výhodu. Zásadní ale byl výrazně složitější vývoj databázově intenzivních operací, což jsou v SaaS systému pro firmy téměř všechny funkce. Nevýhodou také bylo, že pro SaaS aplikaci používanou různými klienty by Node server vyžadoval buď výrazně více paměti, nebo musí po provedení operace zahazovat načtená data a ztrácí mnoho ze svých výhod.
- Python a Django: Rychlost jazyka a Djanga obecně, zejména rozběh při chvíli nepoužívání uživateli. Důležitá byla i horší přehlednost kódu, ale uznáváme, že může jít o subjektivní argument.
PHP + Node + Python
Na závěr hodnocení se sluší říct, že ve finále používáme všechno:
- PHP tvoří jádro celého systému a zpracovává celou business logiku
- Node se dostalo tam, kde byla potřeba socketová komunikace.
- Python nejde obejít, když chcete AI nástroje. Pro AI je python jedničkou a nabízí spoustu knihoven, které jinde nenajdete. Takže PHP předává zpracování do Pythonu, kde to dává smysl.
A co jiné jazyky a frameworky?
Proč volba Java, Node, PHP, Python a ne jiné?
Víme, že existují i jiné jazyky a nástroje, které by bylo relevantní srovnávat. Cílem našeho srovnání nebylo udělat analýzu všeho, co je na trhu, ale vybrat z těch variant, které jsou pro nás relevantní.
Abychom se přiblížili úplnosti, alespoň tedy uvedeme u některých, proč vypadly doslova v 1. kole.
.NET a C#
Vývojová prostředí .NET i C# jsou výborné ekosystémy. Přesto vypadly při výběru hned z počátku z několika zásadních důvodů:
- Jde o uzavřené ekosystémy, se kterými máme z minulosti zkušenosti. Např. jste více odkázaní na strategické rozhodnutí Microsoftu, co bude a nebude podporovat.
- Jsou vázané na servery Microsoft a jejich provoz je citelně dražší. Stejný hrubý výkon s Linux prostředím získáte za citelně nižší cenu.
- Rozšiřitelnost nebo také modulů třetích stran je pro uzavřené prostředí omezená a vždy dražší, než jsou možnosti otevřených technologií. Chtěli jsme framework, který i pro vás bude výhodný.
Zásadní výhodou každého ekosystému je, že poskytuje integrované a sladěné služby. Můžete tak rychleji naskočit a jet, hledání cest, jak správně postupovat, je jednodušší. Pokud ale logika nevyhovuje vašemu záměru, stane se totéž, co mělo být výhodou, zásadní překážkou. Vzhledem k tomu, že jsme měli za cíl vyvíjet aplikace jedním kódem pro mobilní zařízení i počítač, nechtěli jsme aplikaci, kterou je nutné ve Windows instalovat a chtěli jsme mít možnost vlastní orchestrace, většina výhod .NET i C# by stála v cestě.
C++, Go
Oba jsou úžasné jazyky a autor článku má zejména C++ rád, ale pro web aplikace se nehodí. Jeho doménou nejsou databázově intenzivní operace.
Go je na tom podobně s C++. Hlavní výhody Go (i C++) v podobně velmi rychlého zkompilovaného kódu, který exceluje tam, kde je dobrá paralelizace úloh přinášejí významné nevýhody do rychlého DevOps procesu a vývoj v nich je komplikovanější a tedy citelně dražší než v PHP nebo Pythonu.
PHP a vibe coding?
Jak volit optimální jazyk pro vibe coding?
Zatímco v roce 2020, kdy vývoj začínal, nehrála umělá inteligence při výběru roli, v roce 2026 bude pro většinu týmů otázka nasazení vibe codingu jednou z rozhodujících. Zároveň je vibe coding stále ještě na začátku své pracovní kariéry a ještě neprokázal své postavení v celém životním cyklu.
Je rozhodující programovací jazyk při vibe coding?
Záleží na tom, jak chcete vibce coding používat. Pokud je vaší představou vývoj aplikace bez práce s kódem (např použití Lovable), tak o PHP nemá smysl uvažovat. PHP není nástroj, ve kterém by generátory pracovaly.
Pokud budete chtít vibe-coding využívat jako parťáka při párovém programování, tedy něco AI něco vy, je dobré začít s nějakým frameworkem, který AI umí. Nebo ji na svůj framework vytrénovat. PHP pak bude stejně dobrou volbou, jako Python. V obou případech bude AI těžit z toho, že množství kódu, na kterém se mohla učit, je obrovské, takže bude dobře vytrénovaná.
PHP a vibe coding?
PHP bude mít trochu nevýhodu v tom, že kódy jsou často desetiletí staré a to se na jejich použitelnosti samozřejmě projeví. Více než u jiných jazyků budete narážet ne to, že AI použije nějakou vykopávku.
Na co si dát s vibe coding pozor?
Pár zkušeností, které jsme nasbírali při používání vibe coding společně s PHP frameworkem
- Držte se PHP 8+. Má to dobrý důvod. Od PHP 8 jazyk používá důsledně typy a to výrazně pomůže i AI, aby proměnné používala správně. Nebude vám tolik míchat hrušky s jablky, např. datum jako string z databáze a jako objekt DateTime (oblíbená lumpárna)
- Snažte se znát použitý framework. Díky dostupnosti mnoha knihoven má AI velkou snahu přitáhnout něco, co vlastně vůbec nepotřebujete.
- Pokud používáte rozsáhlejší ekosystém, je dobré jí zakázat z něj utéct. Bude to pak podobnější programování v .NET, ale jenom ku prospěchu věci.
- Nevěřte tomu, že AI chápe, jak rozmanitá mohou být data v databázi.
Kolik vibe coding ušetří
Se zkušenostmi se roztrhl pytel a miliony programátorů sdílí, jak jim vibe coding pomáhá. Tento článek ho nechce mít za téma, ale s ohledem na výběr jazyka se hodí pamatovat na to že, tvorba programového kódu tvoří v projektu jen 20 - 40% procent práce.
Vytváření aplikace je pro podnikovou nebo SaaS aplikaci jen cca 10 - 20% práce. Když ty dvě hodnoty vynásobíte, získáte celý životní cyklus SaaS a v něm programování tvoří 2 - 10% celkové práce i nákladů. Naproti tomu péče o systém tvoří kolem 30%, ostatní je péče o lidi.
AI a vibe coding změnily svět programátorů, ale výběr jazyka i dohled nad kvalitní prací je pořád důležitý. Na těch 20% ušetříte možná 50%. Ale víc jde o těch 30% správy a 50% péče o lidi. A kvůli nim jsme dělali výběr. Už 6. rokem se velmi osvědčil.