Proč se v Javě XML nahrazuje YML?

anonym

Proč se v Javě XML nahrazuje YML?
« kdy: 12. 11. 2018, 15:59:57 »
Přinejmenším na Java plaformě se v posledních letech začalo omezovat používání XML souborů ve prospěch psaní přímo v Javě - vývojáři si asi uvědomili, že proč programovat v XML, když to můžeme dělat přímo v Javě.

Co se ale děje teď, je skoro k neuvěření, XMLka začal nahrazoval formát YML. Píšou se v tom konfiguráky nejrůznějšího typu. Statickou typovou kontrolu to nemá vůbec žádnou. U technologie která YML používá jako konfigurák se tak vlastně ani nemůžu podívat, jaké možná parametry můžu nastavit. A rovněž mi nic nedělá ani základní typovou kontrolu.

Dále by mě zajímalo, k čemu je vlastně dobrý formát YML, když už v podstatě to samé dokáže (pokud se nepltetu) formát JSON? Nebo je snad něco co v YML nepíšu a JSON nikoliv?

Mohli byste mi tu někdo vysvětlit, se tak rozmáhá formát YML namísto starého dobrého XML, které vlastně ani nebylo tak špatné? Jaký to má smysl? Komu to má prospět? Kdo tohleto vymyslel?
« Poslední změna: 12. 11. 2018, 16:18:35 od Petr Krčmář »


David

Re:XML vs YML - svět se zbláznil?
« Odpověď #1 kdy: 12. 11. 2018, 16:03:45 »
Přinejmenším na Java plaformě se v posledních letech začalo omezovat používání XML souborů ve prospěch psaní přímo v Javě - vývojáři si asi uvědomili, že proč programovat v XML, když to můžeme dělat přímo v Javě.

Co se ale děje teď, je skoro k neuvěření, XMLka začal nahrazoval formát YML. Píšou se v tom konfiguráky nejrůznějšího typu. Statickou typovou kontrolu to nemá vůbec žádnou. U technologie která YML používá jako konfigurák se tak vlastně ani nemůžu podívat, jaké možná parametry můžu nastavit. A rovněž mi nic nedělá ani základní typovou kontrolu.

Dále by mě zajímalo, k čemu je vlastně dobrý formát YML, když už v podstatě to samé dokáže (pokud se nepltetu) formát JSON? Nebo je snad něco co v YML nepíšu a JSON nikoliv?

Mohli byste mi tu někdo vysvětlit, se tak rozmáhá formát YML namísto starého dobrého XML, které vlastně ani nebylo tak špatné? Jaký to má smysl? Komu to má prospět? Kdo tohleto vymyslel?

Minimalne je to citelnejsi viz https://www.csestack.org/yaml-vs-json-vs-xml-difference/

Chcete se zeptat na neco konkretniho nebo ocekavate ze za vas budeme jako cvicene opice parsovat vysledky z google?

To je jedno

Re:XML vs YML - svět se zbláznil?
« Odpověď #2 kdy: 12. 11. 2018, 16:13:37 »
Nevim přesně jaký balík to dělá, ale v mém frameworku v PHP dokážu definovat a pak validovat strukturu YML.

wsh

Re:XML vs YML - svět se zbláznil?
« Odpověď #3 kdy: 12. 11. 2018, 16:17:30 »
Tohle bude asi pěkný flamewar. Jestli se opravdu jen ptáš, tak za mě je YAML lepší pro konfigurační soubory než JSON, protože je čitelnější, jdou v něm psát komentáře bez nějakých workaroundů a celkově je tak nějak bližší tradičním konfiguračním souborům na unixu.

Ukázka z praxe: https://aws.amazon.com/blogs/mt/the-virtues-of-yaml-cloudformation-and-using-cloudformation-designer-to-convert-json-to-yaml/

Re:XML vs YML - svět se zbláznil?
« Odpověď #4 kdy: 12. 11. 2018, 16:23:06 »
Berte to tak, že někteří lidé prostě k smrti nenávidí špičaté závorky. Nic jiného za tím není, hledat v tom nějakou logiku je pošetilé.

Už spoustu let tu máme XML, které má jmenné prostory, schémata (XSD), transformace (XSLT), ukazatele (XPath, XPointer), dotazovací jazyk (XQuery). Pak ale přišel někdo, že je XML moc ukecané a bůhvíco ještě, a vymyslel JSON, který se prý mnohem lépe čte a píše. No a pro JSON se pomalu vymýšlí to samé, co máme pro XML – schémata (JSON Schema), ukazatele (JSON Pointer). A teď mám i nejnovější objev, dotazovací jazyk – GraphQL. No a do toho přišel někdo s tím, že JSON je moc ukecaný a bůhvíco ještě (kde jsem to jen viděl), a vymyslel YAML, který se prý mnohem lépe čte a píše.

Takže já bych to nijak neřešil. Ti, co potřebují každé tři roky nový formát, je budou vynalézat stále. No a těm ostatním dojde, že problém není ve formátu. Že jakékoli složitější dokumenty jsou prostě bez podpory na straně editorů (zvýrazňování, formátování, doplňování) nepřehledné z principu, a žádným formátem se to nedá ošidit. No a pro ty tu  pořád bude stabilní a prověřené XML, které má dávno vyřešené všechno, co se teď ve světě JSON/YAML s velkou slávou objevuje.

Ale když už ve světě JSONu vynalezli XSD, XPath a teď i XQuery, kdy myslíte, že vynaleznou XSLT?


zdenek henek nereg.

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #5 kdy: 12. 11. 2018, 17:06:48 »
Přinejmenším na Java plaformě se v posledních letech začalo omezovat používání XML souborů ve prospěch psaní přímo v Javě - vývojáři si asi uvědomili, že proč programovat v XML, když to můžeme dělat přímo v Javě.

Co se ale děje teď, je skoro k neuvěření, XMLka začal nahrazoval formát YML. Píšou se v tom konfiguráky nejrůznějšího typu. Statickou typovou kontrolu to nemá vůbec žádnou. U technologie která YML používá jako konfigurák se tak vlastně ani nemůžu podívat, jaké možná parametry můžu nastavit. A rovněž mi nic nedělá ani základní typovou kontrolu.

Dále by mě zajímalo, k čemu je vlastně dobrý formát YML, když už v podstatě to samé dokáže (pokud se nepltetu) formát JSON? Nebo je snad něco co v YML nepíšu a JSON nikoliv?

Mohli byste mi tu někdo vysvětlit, se tak rozmáhá formát YML namísto starého dobrého XML, které vlastně ani nebylo tak špatné? Jaký to má smysl? Komu to má prospět? Kdo tohleto vymyslel?

Ale vzdyt si muzete vybrat!

Napr. takove gis standardy jsou porad XML

Re:XML vs YML - svět se zbláznil?
« Odpověď #6 kdy: 12. 11. 2018, 17:29:48 »
Už spoustu let tu máme XML, které má jmenné prostory, schémata (XSD), transformace (XSLT), ukazatele (XPath, XPointer), dotazovací jazyk (XQuery). Pak ale přišel někdo, že je XML moc ukecané a bůhvíco ještě, a vymyslel JSON, který se prý mnohem lépe čte a píše. No a pro JSON se pomalu vymýšlí to samé, co máme pro XML – schémata (JSON Schema), ukazatele (JSON Pointer). A teď mám i nejnovější objev, dotazovací jazyk – GraphQL. No a do toho přišel někdo s tím, že JSON je moc ukecaný a bůhvíco ještě (kde jsem to jen viděl), a vymyslel YAML, který se prý mnohem lépe čte a píše.

Takže já bych to nijak neřešil. Ti, co potřebují každé tři roky nový formát, je budou vynalézat stále. No a těm ostatním dojde, že problém není ve formátu. Že jakékoli složitější dokumenty jsou prostě bez podpory na straně editorů (zvýrazňování, formátování, doplňování) nepřehledné z principu, a žádným formátem se to nedá ošidit. No a pro ty tu  pořád bude stabilní a prověřené XML, které má dávno vyřešené všechno, co se teď ve světě JSON/YAML s velkou slávou objevuje.

YAML - je vizuální markdown jazyk - a už před nástupem JSONu jsem jej vidět používat pro konfigurace, pro poznámky. V JSONu a XMLku je ta vizuální stránka potlačená.

XMLko je fajn, ale některé z mých nepříjemných zážitků jsou spojené s konfigurací Java aplikací v XML. Případně číst XML logy taky nemusím.

Srovnejte si složitost SOAPu a RESTu - tam mám pocit, že designéři se trochu utrhli s řetězu. Asi by mohl docela dobře existovat REST nad XML, ale k výměně technologie obvykle musí být víc důvodů než jeden - byť některé důvody jsou marketingové nebo podmíněné nástupem nové generace programátorů, která starší technologii nezvládla nebo odmítla.

V programování hraje velkou roli lidský faktor a dochází k cyklické obměně technologii - jednak se mění hw, mění se požadavky zákazníků, a většina technologii má tendence bobtnat - což není problém, když danou technologii zastihnete na začátku cyklu jako junior nebo mladý senior - změny stíháte absorbovat. Pokud ale k technologii přistoupíte v pozdějším cyklu, tak komukoliv bez let zkušeností letitá technologie musí přijít jako monstrum - do rozjetého vlaku se dost špatně nastupuje - a začíná se znova s něčím jednoduchým, přehledným, rychlým elegantním, z čehož se za 10-20 let stane monstrum.

senior

Re:XML vs YML - svět se zbláznil?
« Odpověď #7 kdy: 12. 11. 2018, 18:35:04 »
Pokud ale k technologii přistoupíte v pozdějším cyklu, tak komukoliv bez let zkušeností letitá technologie musí přijít jako monstrum - do rozjetého vlaku se dost špatně nastupuje - a začíná se znova s něčím jednoduchým, přehledným, rychlým elegantním, z čehož se za 10-20 let stane monstrum.

Tak proč je Java pořád tak úžasná? Nebobtná, je jednoduchá, přehledná a elegantní. A to není úplně nová.

Re:XML vs YML - svět se zbláznil?
« Odpověď #8 kdy: 12. 11. 2018, 18:49:18 »
Pokud ale k technologii přistoupíte v pozdějším cyklu, tak komukoliv bez let zkušeností letitá technologie musí přijít jako monstrum - do rozjetého vlaku se dost špatně nastupuje - a začíná se znova s něčím jednoduchým, přehledným, rychlým elegantním, z čehož se za 10-20 let stane monstrum.

Tak proč je Java pořád tak úžasná? Nebobtná, je jednoduchá, přehledná a elegantní. A to není úplně nová.
:) pobavilo

Re:XML vs YML - svět se zbláznil?
« Odpověď #9 kdy: 12. 11. 2018, 18:55:50 »
YAML - je vizuální markdown jazyk - a už před nástupem JSONu jsem jej vidět používat pro konfigurace, pro poznámky. V JSONu a XMLku je ta vizuální stránka potlačená.

XMLko je fajn, ale některé z mých nepříjemných zážitků jsou spojené s konfigurací Java aplikací v XML. Případně číst XML logy taky nemusím.

Srovnejte si složitost SOAPu a RESTu - tam mám pocit, že designéři se trochu utrhli s řetězu. Asi by mohl docela dobře existovat REST nad XML, ale k výměně technologie obvykle musí být víc důvodů než jeden - byť některé důvody jsou marketingové nebo podmíněné nástupem nové generace programátorů, která starší technologii nezvládla nebo odmítla.

V programování hraje velkou roli lidský faktor a dochází k cyklické obměně technologii - jednak se mění hw, mění se požadavky zákazníků, a většina technologii má tendence bobtnat - což není problém, když danou technologii zastihnete na začátku cyklu jako junior nebo mladý senior - změny stíháte absorbovat. Pokud ale k technologii přistoupíte v pozdějším cyklu, tak komukoliv bez let zkušeností letitá technologie musí přijít jako monstrum - do rozjetého vlaku se dost špatně nastupuje - a začíná se znova s něčím jednoduchým, přehledným, rychlým elegantním, z čehož se za 10-20 let stane monstrum.
Na konfigurační soubory, které se vejdou na jednu obrazovku a mají maximálně tři úrovně odsazení, je YAML krásný formát. Jenže každý takovýhle krásný jednoduchý konfigurační soubor časem roste a roste. A to je problém všech těchhle formátů, které mají být jednodušší než XML. Všechny fungují na jednoduchých příkladech, ale se stoupající komplexitou toho, co mají popisovat, křivka použitelnosti strmě klesá. Podívejte se třeba na pradědečka všech těchhle formátů „jednodušších než HTML/XML“ – wiki, konkrétně MediaWiki syntax. Když se podíváte na zdroják libovolné stránky na Wikipedii, je tam plno nesrozumitelných šablon, parametry se píšou pokaždé jinak a bez nápovědy nenapíšete ani externí odkaz. O co přehlednější a srozumitelnější by ten zdroják byl, kdyby se nepoužíval „jednoduchý“ wiki jazyk, ale „komplikované“ XML.

Konfigurace Java aplikací přes XML bývá problém, když je pro konfiguraci použitý prakticky vlastní jazyk serializovaný do XML. Jde to udělat, ale to neznamená, že je to dobrý nápad – a není to chyba XML. A zrovna ty logy – ony i v tom textovém souboru mají nějakou strukturu, která se zápisem do čistého textu ztratí, a pak ji zase další nástroje pro analýzu logů pracně obnovují. Nepřipadá mi zase tak špatný nápad dělat to opačně – logovat strukturovaná data, a pak je případně pro zobrazení člověku hezky zformátovat. Ostatně logování v cloudu už přesně k tomuhle vede, protože logy z desítek strojů už nejde zpracovávat tak, že si budete pročítat textové soubory.

U SOAPu je ten problém, že se snažil vyřešit všechny problémy světa a vyhovět všem. REST nemá formát specifikovaný, může se použít i XML a často se používá, a oproti použití JSONu to má spoustu výhod. Použít pro REST JSON má vlastně jedinou výhodu – snadno se s tím pracuje v prohlížečích, protože prohlížeče nemají rozumné nástroje pro práci s XML (přestože pracují s DOMem, který je přirozenou reprezentací XML).

S tou obměnou technologií v cyklech je to pravda. Mně ale na těch opakovaných snahách vymyslet „jednoduché XML“ vadí to, že se nepoučí z předchozích případů. Takže pořád dokola vznikají WikiWiki, Markdown, JSON, YAML a vždy se na to vrhne spousta lidí s pocitem, že teď už to konečně bude jednoduché – a nedochází jim, že ta složitost není v jazyce, ale v těch dokumentech, a že pro zápis složitějších dokumentů prostě je potřeba určitá robustnost, která u jednoduchých dokumentů skutečně bude trochu překážet. Akorát že se vyplatí naučit se ten nástroj používat, i když je na jednoduché dokumenty trochu neohrabaný, protože se to mnohonásobně vrátí v budoucnosti.

XML by pomohla jedna věc – vydat novou verzi, ve které bychom se vykašlali na DTD a uživatelské entity, a ponechalo by se tam to, co se dnes z XML reálně používá. Problém je, že mnozí by chtěli nejspíš vyházet i XML instrukce a/nebo CDATA, na čemž se nejspíš nikdo neshodne, tak se do toho nikdo raději ani nepouští.

Youda

Re:XML vs YML - svět se zbláznil?
« Odpověď #10 kdy: 12. 11. 2018, 18:56:17 »
Pokud ale k technologii přistoupíte v pozdějším cyklu, tak komukoliv bez let zkušeností letitá technologie musí přijít jako monstrum - do rozjetého vlaku se dost špatně nastupuje - a začíná se znova s něčím jednoduchým, přehledným, rychlým elegantním, z čehož se za 10-20 let stane monstrum.

Tak proč je Java pořád tak úžasná? Nebobtná, je jednoduchá, přehledná a elegantní. A to není úplně nová.

Protoze jeji maintaineri meli rozum a udrzeli se puzeni strkat modni veci primo do jawy.
Zrejme pouceni z dob, kdy do jawy primo zadratovali podporu WS, aby s tim pak byl nebetycny oser.
Vetsinou se v ramci JSR requestu pouze definuje API (se stridavou uspesnosti), pak se necha nekdo jako Apache Foundation, aby vyrobil referencni implementaci, napr treba Apache Axis, ktery pak nahradil Apache CXF, kdyz mluvime o webservicach.

A pak se v mavenu do projektu pridratuje CXF, JSR API zajisti (se stridavym uspechem) prenositelnost, a neni nutno zasirat primo standardni library.

A primo do jawy se pridavaly pouze veci, ktere pres externi knihovny nevyresis, treba anotace, generika, stream API.

Re:XML vs YML - svět se zbláznil?
« Odpověď #11 kdy: 12. 11. 2018, 18:57:17 »
Pokud ale k technologii přistoupíte v pozdějším cyklu, tak komukoliv bez let zkušeností letitá technologie musí přijít jako monstrum - do rozjetého vlaku se dost špatně nastupuje - a začíná se znova s něčím jednoduchým, přehledným, rychlým elegantním, z čehož se za 10-20 let stane monstrum.

Tak proč je Java pořád tak úžasná? Nebobtná, je jednoduchá, přehledná a elegantní. A to není úplně nová.

Jako vtip dobrý. Java je zrovna perfektním ukázkou mého tvrzení - její ekosystém je po cca 20 letech morbidní - desítky knihoven a frameworků jsou legacy, ale stále se aktivně používají (v enterprise prostředí je upgrade až ta poslední věc). Java jako jazyk zůstala jednoduchá, ale o to více se komplikoval její ekosystém. V praxi se asi nepotkáte s tím, že by se programovalo v čisté Javě. Podobný vývoj je vidět i na C# - jelikož si vývoj držel pod palcem Microsoft, tak vývoj nepřipomínal kambrickou explozi, ale tam se zase výrazně bobtnal vlastní programovací jazyk.

Kit

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #12 kdy: 12. 11. 2018, 19:02:35 »
Ještě tady nebyl zmíněn formát INI, který také s oblibou používám pro zápis konfigurace. Dvě úrovně mi musí stačit, jinak je návrh struktury špatný.

XML je vyčítána ukecanost. Při dobrém návrhu struktury se však vyrovná JSONu. YAML je sice o něco stručnější, ale o to zranitelnější. Při jeho editování si raději zvýrazním taby, jinak se z toho může stát noční můra.

Jaká jsou vlastně komponenty XML?
  • <?xml ... příkaz procesoru
  • <!DOCTYPE ... deklarace typu dokumentu
  • <element ... pro data
  • <!-- komentář

Co z toho mají ostatní formáty? JSON má jen ten element, nic víc. YAML k tomu přidává možnost komentářů, což je významným plusem. Příkazy procesoru a deklaraci typu dokumentu tvůrci alternativních formátů nedefinovali - zřejmě jim nedošlo, k čemu jsou dobré. Prostě oznámili, že nejsou potřebné.

Re:XML vs YML - svět se zbláznil?
« Odpověď #13 kdy: 12. 11. 2018, 19:12:17 »
XML by pomohla jedna věc – vydat novou verzi, ve které bychom se vykašlali na DTD a uživatelské entity, a ponechalo by se tam to, co se dnes z XML reálně používá. Problém je, že mnozí by chtěli nejspíš vyházet i XML instrukce a/nebo CDATA, na čemž se nejspíš nikdo neshodne, tak se do toho nikdo raději ani nepouští.

Souhlas. Je to jednak problém zpětné kompatibility, druhak u některých technologií je prostě nutné znovu vymýšlet kolo, protože lidi jen lidi. Jednak hromada programátorů bez vysokoškolského vzdělání vůbec netuší rozsah XML, a pak také někdy je jednodušší začít z gruntu znova než se přetlačovat s existujícím kódem, standardy, .. Je to docela problém - někdy je dobře, když funkčně podobné, ale nekompatibilní věci prostě vypadají jinak - a někdy to naštve, protože se člověk musí učit věci víckrát.

Youda

Re:XML vs YML - svět se zbláznil?
« Odpověď #14 kdy: 12. 11. 2018, 19:50:01 »
Pokud ale k technologii přistoupíte v pozdějším cyklu, tak komukoliv bez let zkušeností letitá technologie musí přijít jako monstrum - do rozjetého vlaku se dost špatně nastupuje - a začíná se znova s něčím jednoduchým, přehledným, rychlým elegantním, z čehož se za 10-20 let stane monstrum.

Tak proč je Java pořád tak úžasná? Nebobtná, je jednoduchá, přehledná a elegantní. A to není úplně nová.

Jako vtip dobrý. Java je zrovna perfektním ukázkou mého tvrzení - její ekosystém je po cca 20 letech morbidní - desítky knihoven a frameworků jsou legacy, ale stále se aktivně používají (v enterprise prostředí je upgrade až ta poslední věc). Java jako jazyk zůstala jednoduchá, ale o to více se komplikoval její ekosystém. V praxi se asi nepotkáte s tím, že by se programovalo v čisté Javě. Podobný vývoj je vidět i na C# - jelikož si vývoj držel pod palcem Microsoft, tak vývoj nepřipomínal kambrickou explozi, ale tam se zase výrazně bobtnal vlastní programovací jazyk.

Ze nekdo stale pouziva nejake stare ohavnosti ale vubec neni problem javy, ta je, jak rekl predrecnik, stale jednoduchy a elegantni jazyk.
V jave zkratka zalozim novy projekt, do pom.xml dal jenom slusne a overene moderni frameworky co zrovna potrebuju, ze nekde na maven central sedi nejaka hromada stareho desiveho hnoje me vubec nezajima.

A pokud nejsem prase a ani maintainer frameworku neni, upgrady jdou jednoduse.
Minuly tyden jsem na stavajicicm rozdelanem projektu upgradoval Spring Boot prepsanim retezce "1.5.9" na "2.0.5" v pom.xml. Hotovo.

Naopak .Net na bobtnani dojel a .Net Core je prave snaha o setrepani stareho balastu.