Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: acr 09. 01. 2016, 12:54:26

Název: V čem psát přenositelné aplikace?
Přispěvatel: acr 09. 01. 2016, 12:54:26
Zdravím,

přemýšlím, v čem je vhodné psát aplikace přenositelné mezi platformami - primárně Windos a Linux, případně i mobilní platformy.
Je mi jasné, že zvláště na mobilech-tabletech je životní cyklus aplikace jiný, ale mě jde hlavě o knihovny řešící určitou (všude stejnou) problematiku. Nejlépe se asi nabízí C#, ale nevím, jak moc je reálně použitelné mono nebo Xamarin.
Nějaké zkušenost?
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Kit 09. 01. 2016, 14:29:44
Zdravím,

přemýšlím, v čem je vhodné psát aplikace přenositelné mezi platformami - primárně Windos a Linux, případně i mobilní platformy.
Je mi jasné, že zvláště na mobilech-tabletech je životní cyklus aplikace jiný, ale mě jde hlavě o knihovny řešící určitou (všude stejnou) problematiku. Nejlépe se asi nabízí C#, ale nevím, jak moc je reálně použitelné mono nebo Xamarin.
Nějaké zkušenost?

Zrovna C# mi moc přenositelný nepřipadá, spíš Java. Ale i Python, Lua či Javascript jsou přenositelné. Záleží na typu aplikace.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: . 09. 01. 2016, 14:30:07
Na tohle není jednoduchá odpověď, protože hodně záleží na typu, použitenosti a nárocích na ty aplikace.

Každopádně jednou z nejpoužívanějších cest v poslední době je Javascript a nějaký framework.
Pro desktopy primárně Electron nebo Nw.js, pro mobily Ionic/Cordova/PhoneGap a případné další, tuhle oblast moc nesleduji. Sám používám electron a funguje dobře, vyvoj a základní testování na osx, primární nasazení win, potencionálně linux. Není to jen o jazyku,  holém kódu a knihovnách, tady problém většinou moc není, ale je potřeba ošetřit drobností, ve kterých se ty prostředí liší (zpravidla windows) a pokud jdeš dost nízko, občas je potřeba dopsat nějaké dílčí specifické rozšíření v nativním prostředí.

Asi tahle odpověď nebude místní komunitou zrovna nadšeně přijata :), ale že to je smysluplná (a často i nejjednodušší) cesta ukázal i Microsoft se svým Visual Strudio Code.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: . 09. 01. 2016, 14:33:40
a ještě dodám, že z toho electronu (ale i dalších) jde vygenerovat např. exe aplikace, takže není problém s instalací nějakého runtime prostředí. To se ale většinou týká i zmiňovaného Pythonu, Ruby a Lua, akorát ta podpora podle mne není na tak vysoké úrovni, jaká je třeba u electronu.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Tomaskom 09. 01. 2016, 15:08:36
Mám dobry zkušenosti s C++ a Qt(4). A to i v případě bez GUI, QtCore má užitečny věci třeba pro multithread, multiplatformní ukládání nastavení (na Linuxu se to samo strčí do .config/, na win do registrů, umí to (de)serializovat jakoukoli třídu) atd. Ale hlavně má Qt suprovou dokumentaci, takže vývoj šel rychle, i když sem se poprvy s Qt seznamoval za pochodu.
Případně s Pythonem se dá použít PyQt. A Qt5 umí i mobilní aplikace, ale to sem nikdy nezkoušel.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Rado2 09. 01. 2016, 15:31:28
Na tohle není jednoduchá odpověď, protože hodně záleží na typu, použitenosti a nárocích na ty aplikace.

Každopádně jednou z nejpoužívanějších cest v poslední době je Javascript a nějaký framework.
Pro desktopy primárně Electron nebo Nw.js, pro mobily Ionic/Cordova/PhoneGap a případné další, tuhle oblast moc nesleduji. Sám používám electron a funguje dobře, vyvoj a základní testování na osx, primární nasazení win, potencionálně linux. Není to jen o jazyku,  holém kódu a knihovnách, tady problém většinou moc není, ale je potřeba ošetřit drobností, ve kterých se ty prostředí liší (zpravidla windows) a pokud jdeš dost nízko, občas je potřeba dopsat nějaké dílčí specifické rozšíření v nativním prostředí.

Asi tahle odpověď nebude místní komunitou zrovna nadšeně přijata :), ale že to je smysluplná (a často i nejjednodušší) cesta ukázal i Microsoft se svým Visual Strudio Code.

Tiež som trochu hľadal riešenie, ale praktické skúsenosti s prenositeľnou aplikáciou nemám. C# / Xamarin vyzeral zaujímavo, keď som to riešil, ale neskúšal som. Neviem, či existuje niečo slušné, kde naozaj stačí jeden kód na všetky platformy.
Osobne keby som mal použiť Electron a mučiť sa v javascripte, tak by som radšej napísal 3x tú istú aplikáciu v C#/C++ a aspoň by vyzerala na každej platforme prirodzene a mala natívnu rýchlosť a možnosti. momentálne sa učím písať prenositeľne aspoň C++ kód bez GUI, to GUI asi treba písať pre každú platformu zvlášť.
Písať aplikáciu webovými technológiami môžeš, ak to má byť niečo nenáročné, našiel si nejaké pekné knižnice s konzistentným vzhľadom a nevadí, že to bude vyzerať podivne.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Jaro 09. 01. 2016, 16:00:47
Zvazte pouzitie Javy a pribalte k aplikacii aj Java Runtime Environment s pomocou nastrojou ako launch4j a podobnych (je ich dost, staci poguglit), poskytuju siroke moznosti konfiguracie, aplikaciu je s nimi mozne zbuildovat ako klasicky exe, pripadne rpm, deb, os x app.
Na tvorbu UI mate v Jave AWT, Swing, SWT. Pripadne moze aplikacia mat v sebe embeddovany webovy server a UI moze byt browser s URL localhost.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: uetoyo 09. 01. 2016, 16:04:02
a ještě dodám, že z toho electronu (ale i dalších) jde vygenerovat např. exe aplikace, takže není problém s instalací nějakého runtime prostředí. To se ale většinou týká i zmiňovaného Pythonu, Ruby a Lua, akorát ta podpora podle mne není na tak vysoké úrovni, jaká je třeba u electronu.

Pro Python velmi dobře funguje PyInstaller.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 16:06:01
C#, blbneš? Hybaj si stáhnout Qt Cretator. A hned si v něm udělej prográmek, třeba si najdi examply a tam je pěkná věcička, jmenuje se to tuším network-chat. Jsou tam i další, třeba camera. Prgogramy v Qt si můžeš zkompilovat pro widle, pro linux, pro android, jde i iOS, nejsem si jistý jestli i WP. Je to nejlepší knihovna na světě, která strčí Pythony, Cšarpy i Javy do kapsy. Původně ji udělali v Nokii pro Symbian.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 16:08:32
s když se tak nabízí C#, tak se taky podívej jak moc se nenabízí: pokud vím, tak Visual Studio s Xamarinem stojí nějakých 20000,- Kč a to se mi nepodařilo dohledat, jestli je to jednorázová platba, nebo musíš platit ještě nějaký poplatek rok co rok.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 16:21:09
Jo a ona je sice i pro Python, jenže Python je přebytečný šunt, a když se pro něj něco vyvíjí, tak je to mrhání časem, místo aby se dělaly pořádné knihovny pro C++. Když Qt, tak jedině s C++ 8)
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Honza 09. 01. 2016, 16:25:23
s když se tak nabízí C#, tak se taky podívej jak moc se nenabízí: pokud vím, tak Visual Studio s Xamarinem stojí nějakých 20000,- Kč a to se mi nepodařilo dohledat, jestli je to jednorázová platba, nebo musíš platit ještě nějaký poplatek rok co rok.

1 vývojářská licence pro Qt stojí $350, měsíčně, aha?
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: arnold 09. 01. 2016, 16:26:52
QT vypada fajn
(https://www.glasswire.com/images/feature_image_remote_monitoring.png)
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 16:29:23
s když se tak nabízí C#, tak se taky podívej jak moc se nenabízí: pokud vím, tak Visual Studio s Xamarinem stojí nějakých 20000,- Kč a to se mi nepodařilo dohledat, jestli je to jednorázová platba, nebo musíš platit ještě nějaký poplatek rok co rok.

1 vývojářská licence pro Qt stojí $350, měsíčně, aha?

Vsadím se, že těch 350$ platíš jen v případě, pokud chceš support, jinak to není nutné ani pro komerční apps.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: jaasg 09. 01. 2016, 17:11:03
> kniznice
> všude stejnou problematiku

vies co napis to v C, o 20 rokov len prekompilujes a mas vybavene

pokial ta všude stejna problematika je nejake GUI, tak sorry
ale GUI sa rychlo vyvija a hladat svaty gral v tejto oblasti je naivne.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Honza 09. 01. 2016, 17:15:33
s když se tak nabízí C#, tak se taky podívej jak moc se nenabízí: pokud vím, tak Visual Studio s Xamarinem stojí nějakých 20000,- Kč a to se mi nepodařilo dohledat, jestli je to jednorázová platba, nebo musíš platit ještě nějaký poplatek rok co rok.

1 vývojářská licence pro Qt stojí $350, měsíčně, aha?

Vsadím se, že těch 350$ platíš jen v případě, pokud chceš support, jinak to není nutné ani pro komerční apps.
Licence na Qt byla potřeba vždycky, pokud nezveřejníš zdrojáky, potřebuješ licenci, i když support nevyužiješ.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: nou 09. 01. 2016, 17:32:09
Qt je pod LGPL co umoznuje vyvijat aj uzavrete aplikacie pri dynamickom linkovani. Komercna licencia je nutna pre staticke linkovanie a podporu od Digie.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: RedImp 09. 01. 2016, 18:08:32
s když se tak nabízí C#, tak se taky podívej jak moc se nenabízí: pokud vím, tak Visual Studio s Xamarinem stojí nějakých 20000,- Kč a to se mi nepodařilo dohledat, jestli je to jednorázová platba, nebo musíš platit ještě nějaký poplatek rok co rok.

VS Community je zadarmo, funkčně je na úrovni verze Professional a obsahuje Xamarin Starter Edition https://xamarin.com/starter
Jsou tam značná omezení, ale pro začátek je to úžasné.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: acr 09. 01. 2016, 18:18:39
Koupit VS není problém, resp. dvě licence ve firmě mám.
Sám jsem jsem spíš na čisté C, občas Cpp, (dělám hodně low level a embedded, někdy s velkým důrazem na výkon). C# občas něco málo, ale zvláště kolem modernějších prvků toho jazyka mám velké mezery, nicméně mi vzhledem k "snadnosti" vývoje a relativně dobré dokumentaci a dostupnosti know-how přišel dobrý - jenom nevím, jak s tou přenositelností. Na linuxu v mono mám zkoušené jen CLI aplikace - to funguje velmi dobře, stejná "binárka" na windows i ARM desce. Navíc se mi zdálo, že výkon není tak zlý, jako u Javy.
Navíc s Javou nechci mít společného nic, v životě jsem neviděl desktopovou aplikaci psanou v Javě, kde by mě nepotkaly problémy jako padání nebo záseky GUI.
Do webových technologií se mi nechce, občas na dané platformě budu potřebovat něco hodně low level.
C a Qt se mi zdá jako výborná volba, akorát s Qt mám za sebou jenom pár hodně jednoduchých experimentů a vůbec nevím, jak moc je náročné dostat takovou aplikaci na mobilní platformu (WP a Android, Apple asi pro mě nikdy nebude z důvodu jednoho omezení použitelný).
 
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Igel 09. 01. 2016, 18:30:15
chod do c#. ziadne c++, ziadne php. chod c#
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Kit 09. 01. 2016, 18:49:31
chod do c#. ziadne c++, ziadne php. chod c#

A důvod?
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: kozec 09. 01. 2016, 18:52:11
chod do c#. ziadne c++, ziadne php. chod c#
Ale no tak, to ta neucili slusne rozpravat?  :D

C# je prenositelne jak chciply slon. Nieje to nemozne, ale nechat to odhnit boli menej.

Pokial staci desktop, docela fajn je Python, ak nie, Java, C++ alebo nejake zverstvo v javascripte.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 18:57:23
Koupit VS není problém, resp. dvě licence ve firmě mám.
Sám jsem jsem spíš na čisté C, občas Cpp, (dělám hodně low level a embedded, někdy s velkým důrazem na výkon). C# občas něco málo, ale zvláště kolem modernějších prvků toho jazyka mám velké mezery, nicméně mi vzhledem k "snadnosti" vývoje a relativně dobré dokumentaci a dostupnosti know-how přišel dobrý - jenom nevím, jak s tou přenositelností. Na linuxu v mono mám zkoušené jen CLI aplikace - to funguje velmi dobře, stejná "binárka" na windows i ARM desce. Navíc se mi zdálo, že výkon není tak zlý, jako u Javy.
Navíc s Javou nechci mít společného nic, v životě jsem neviděl desktopovou aplikaci psanou v Javě, kde by mě nepotkaly problémy jako padání nebo záseky GUI.
Do webových technologií se mi nechce, občas na dané platformě budu potřebovat něco hodně low level.
C a Qt se mi zdá jako výborná volba, akorát s Qt mám za sebou jenom pár hodně jednoduchých experimentů a vůbec nevím, jak moc je náročné dostat takovou aplikaci na mobilní platformu (WP a Android, Apple asi pro mě nikdy nebude z důvodu jednoho omezení použitelný).

na Android úplně jednoduše, zmáčkneš zkompilovat na Android verze X s připojený telefonem a máš ji tam. Zmáčkenš zkompilovat pro dektop a tu samou aplikaci si spustíš na desktopu. U Androidu mě apliakce zahřívala telefon a padala, musel jsem ji dat na tablet, ale podle mě jsem asi něco blbě nakódoval. Akorát je nutné se naučit QML, v tom se totiž dělá UI pro mobil. Ono jako funguje i normální UI desktopové, ale není to na mobilu jaksi ono.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 19:03:22
Na Qt je výborné to, že nepřímo definuje, jakou bude mít aplikace architekturu, takže se s tím nemusím lámat hlavu. Prostě použiju strukturu Qt i pro moji aplikaci a knihovny jako šablonu. Nepřímo vede k pořádku a jednoduchosti a to mi vyhovuje. V QML části jsou ovšem trochu nedodělky, ale na nějaké zásadní jsem nenarazil. Osobně si myslím, že to QML je zbytečnost, měli použít k návrhu UI normálně C++ a bylo by.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Igel 09. 01. 2016, 23:10:57
chod do c#. ziadne c++, ziadne php. chod c#

A důvod?
ryychly vyvoj, mozes robit v tom i na linuxe. nepotrebujes instalovat X veci, staci ti framework a je to.
python to snad delas srandu, ne? :D
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 23:12:41
chod do c#. ziadne c++, ziadne php. chod c#

A důvod?
ryychly vyvoj, mozes robit v tom i na linuxe. nepotrebujes instalovat X veci, staci ti framework a je to.
python to snad delas srandu, ne? :D


Na linuxe? V Mono? To tak leda nejakou kalkulacku.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Kit 09. 01. 2016, 23:23:35
chod do c#. ziadne c++, ziadne php. chod c#

A důvod?
ryychly vyvoj, mozes robit v tom i na linuxe. nepotrebujes instalovat X veci, staci ti framework a je to.
python to snad delas srandu, ne? :D

To jsou argumenty spíš pro Javu než pro C#.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Igel 09. 01. 2016, 23:39:04
jasne, to urcite pre javu
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 23:53:56
https://www.youtube.com/watch?v=Mk3qkQROb_k
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Zelenac 09. 01. 2016, 23:55:04
to je jen jedno trapne video, jen jsem chtel vyzkouset jestli setu zobrazi... :D
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Cleb 10. 01. 2016, 00:07:43
To vážně záleží na tom co je to za aplikace, kdo je hlavní cílová skupina, atd. Pokud například cílíte na Windows / Linux, nejlepší (z mého pohledu) bude C++ a Qt - takové aplikace se v obou prostředích chovají přirozeně. Qt je navíc velmi příjemná knihovna.

Pokud cílíte na mobilní platformy, univerzální řešení neexistuje. Je sice možné naplácat to v javascriptu a html, ale jediné čeho tím docílíte bude že aplikace bude na všech systémech vypadat stejně špatně. Vzhledem k tomu že uživatel každého systému očekává jiné UI, je potřeba přinejmenším UI část vytvořit zvlášť pro každou platformu. V tom je asi nejlepší xamarin (jádro aplikace společné, UI pro každou platformu jiné). Xamarin používá C#.

Pokud chcete cílit na windows a mobily a nevadí vám horší podpora linuxu, dával by smysl C# (velká část kódu by šla sdílet mezi xamarinem a windows verzí), a v linuxu by to fungovalo v mono nejspíše jakž takž také.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Radek Miček 10. 01. 2016, 01:16:29
Osobně používám F# (ale lze i C#) a GUI knihovnu Eto.Forms (https://github.com/picoe/Eto).
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: neznámý 10. 01. 2016, 11:17:09
Pokud cílíte na mobilní platformy, univerzální řešení neexistuje. Je sice možné naplácat to v javascriptu a html, ale jediné čeho tím docílíte bude že aplikace bude na všech systémech vypadat stejně špatně. Vzhledem k tomu že uživatel každého systému očekává jiné UI, je potřeba přinejmenším UI část vytvořit zvlášť pro každou platformu. V tom je asi nejlepší xamarin (jádro aplikace společné, UI pro každou platformu jiné). Xamarin používá C#.

Tenhle argument už dnes tolik nemusí platit, za prvé se vzhled dá pomerně věrně přizpůsobit pomocí css a různé vizuální sady jsou součástí, za druhé vznikají věci jako React Native, kde se nevyužívá webview ale přímo nativní prvky OS.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Rado2 10. 01. 2016, 13:52:13
Osobně používám F# (ale lze i C#) a GUI knihovnu Eto.Forms (https://github.com/picoe/Eto).
Zaujímavý tip, ešte som o tom nepočul, idem to skúsiť, má to budúcnosť? Nie sú s tým problémy?
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: zboj 10. 01. 2016, 14:42:06
Osobně používám F# (ale lze i C#) a GUI knihovnu Eto.Forms (https://github.com/picoe/Eto).
Zaujímavý tip, ešte som o tom nepočul, idem to skúsiť, má to budúcnosť? Nie sú s tým problémy?
Je to .NET, což implikuje problémy ;)
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Lama 10. 01. 2016, 22:01:39
Pokud tou mobilní platformou má být Android, tak - https://www.youtube.com/watch?v=lCyfWRef5Oo - C++ + Qt. Pokud netrváš na mobilní platformě, tak je možnost psát to primárně pod/pro Windows a zároveň testovat ve WINE. https://www.winehq.org/winapi_stats  Nebo Java.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: neruda 11. 01. 2016, 10:23:20
s když se tak nabízí C#, tak se taky podívej jak moc se nenabízí: pokud vím, tak Visual Studio s Xamarinem stojí nějakých 20000,- Kč a to se mi nepodařilo dohledat, jestli je to jednorázová platba, nebo musíš platit ještě nějaký poplatek rok co rok.

1 vývojářská licence pro Qt stojí $350, měsíčně, aha?

proc se vzdycky vsude najde nekdo kdo vi o veci naproste h. ale o to sebevedomeji si za tim stoji ?

Vsadím se, že těch 350$ platíš jen v případě, pokud chceš support, jinak to není nutné ani pro komerční apps.
Licence na Qt byla potřeba vždycky, pokud nezveřejníš zdrojáky, potřebuješ licenci, i když support nevyužiješ.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: nou 11. 01. 2016, 13:35:11
http://www.qt.io/FAQ/

Citace
Can I use the Community open source version to develop my commercial product?
It depends on how you license and distribute your product. The free version of Qt is mainly distributed under the LGPL. Some parts under LGPLv2.1 and LGPLv3, other parts only under LGPLv3. You will need to fulfill the license obligations for these licenses when using Qt in your product.
Nikde sa tam nepise o nutnosti mat komercnu licenciu.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: Sten 11. 01. 2016, 13:46:25
Licence na Qt byla potřeba vždycky, pokud nezveřejníš zdrojáky, potřebuješ licenci, i když support nevyužiješ.

Od té doby, kdy Qt koupila Nokia, je i pod LGPL a tohle už potřeba není.
Název: Re:V čem psát přenositelné aplikace?
Přispěvatel: noef 12. 01. 2016, 17:32:09
S tim Xamarinem bych byl opatrny. Znamy, ktery se tim nekolik let zivil na to celkem nadaval - myslenka je pry krasna a jazyk hodne dobry, ale provedeni pokulhava. Prace s tim byl pry workaround vedle workaroundu, protoze se to na ruznych platformach chovalo vzdy o chlup jinak. Co jsem cetl, tak se navic obcas i menilo API, coz z dlouhodobeho hlediska neni nic prijemneho.

Pokud mate predchozi (pozitivni) zkusenosti c C/C++, tak bych asi byt vami zkusil to Qt. Ve skole jsme v tom delali nejakou deskovou hru a byl jsem az prekvapeny, jak hezky se s tim dela.

V opacnem pripade bych se poohlednul po necem nad JVM, coz ale nemusi byt nutne Java. Napr. ve Scale lze v pohode delat s vetsinou knihoven/frameworku/enginu. Treba libGDX (https://libgdx.badlogicgames.com/features.html) - multiplatformni knihovna pro vyvoj her - umi to Android, Windows, Linux, Mac OS X, iOS [pres nejakou spesl implementaci JVM] a HTML [GWT - bohuzel pouze pro Javu].