Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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?
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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)
-
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?
-
QT vypada fajn
(https://www.glasswire.com/images/feature_image_remote_monitoring.png)
-
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.
-
> 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.
-
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š.
-
Qt je pod LGPL co umoznuje vyvijat aj uzavrete aplikacie pri dynamickom linkovani. Komercna licencia je nutna pre staticke linkovanie a podporu od Digie.
-
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é.
-
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ý).
-
chod do c#. ziadne c++, ziadne php. chod c#
-
chod do c#. ziadne c++, ziadne php. chod c#
A důvod?
-
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.
-
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.
-
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.
-
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
-
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.
-
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#.
-
jasne, to urcite pre javu
-
https://www.youtube.com/watch?v=Mk3qkQROb_k
-
to je jen jedno trapne video, jen jsem chtel vyzkouset jestli setu zobrazi... :D
-
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é.
-
Osobně používám F# (ale lze i C#) a GUI knihovnu Eto.Forms (https://github.com/picoe/Eto).
-
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.
-
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?
-
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 ;)
-
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.
-
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š.
-
http://www.qt.io/FAQ/
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.
-
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í.
-
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].