Most nézem, a JavaFX egész jó úton halad mostanság, már ami a feature listát illeti.
Nekem leginkább desktop és mobil alkalmazások fejlesztésére kéne valami cross-platform megoldás, leginkább csak saját igények kielégítésére. Qt jó lenne, de irgalmatlan mennyiségű dolgot kellene megtanulni hozzá, ami persze jó, de ha lehet, egyelőre kihagynám. JavaFX-ből viszont egyelőre hiányzik a mobil támogatás (Android, iOS).
Esetleg tudtok olyat, ami tud natív look&feel-t mobilon (+ desktopon) (vagy ha nem natív, legalább az alap téma nem szörnyű), Java, Ruby, Python (esetleg JS, de inkább ne) a nyelv és lehetőleg elérhető ingyenesen?
Köszi!
- 9955 megtekintés
Hozzászólások
Szia,
Egy megoldás, hogy csinálsz egy közös szerver oldali felületet, és eléhúzod az UI-t, amit aztán olyan nyelven implementálsz, amiben akarsz.
Ennek egy variációja, hogy webes frameworköt használsz, aminek van mobilos változata. Példák SmartGWT, angularjs, kendo (ez fizetős), sencha touch, etc.
http://moduscreate.com/5-best-mobile-web-app-frameworks-sencha-touch/
De akár a javafx2 is jó lehet, igazából ilyenkor jön a próbáljuk ki és meglátjuk történet...
- A hozzászóláshoz be kell jelentkezni
Igen, azt el felejtettem írni, hogy browser based dolgok nem érdekelnek :(
Aztán lehet muszáj leszek mégiscsak Apache Cordovázni, annyira nem találok semmi értelmeset. A példákat meg köszi, megnézem!
- A hozzászóláshoz be kell jelentkezni
Én magam támogatom a HTML5-öt JS-sel (bármennyire is utált nyelv legyen), abban egyet tudok értni, hogy html alapú "mobil appokat" ebben a formában, jelenleg nem érdemes fejleszteni. Amellett, hogy kimértem, s lassú, megbízahatatlan, még szól maga a Facebook alapítójának mondata, mieszerint "Our Biggest Mistake Was Betting Too Much On HTML5"... A piac nem szereti, a fejlesztők nem imádják. Ennyi. Ma, ez halott (talán a jövőben megváltozik)
Jelenleg mobilra - sajnos - csak a natív fejlesztést tartom elképzelhetőnek, és kellően hatékonynak. Ha valami nagyon durva ui-t vagy üzleti logikát (amit úgysem, mert az ugye "szerveroldali") implementáltok, akkor előbb javasolnám a(z akár) JNI-s libet...
Amúgy Qt-nak van valami reklámozott megoldása, de őszintén szólva... kihagyni a - most már - többmilliárd konzisztens UI-ra vágyó usert csak balgaság.
- A hozzászóláshoz be kell jelentkezni
Ezzel egyetértek, viszont vannak esetek, amikor simán egy webes megoldás is jó lehet, pl. olyan admin felület, amit valahogy telefonról kell elérhetővé tenni. Persze sosem
lesz olyan, mint egy natív alkalmazás, viszont "elég jó" lesz...
- A hozzászóláshoz be kell jelentkezni
Azért van akinek sikerül HTML5-ben is reszponzív alkalmazást készíteni :) Sencha-sok elkészítették a Fastbook-ot HTML5 alapokon, ami sokkal fürgébb volt, mint a natív Facebook app. Érdemes megnézni a videót is a különbségről.
- A hozzászóláshoz be kell jelentkezni
Szerettem a sencha ext gwt-jét annó. A mait nem ismerem, de az akkori kicsit lassúnak, nagynak tűnik a mostaniakhoz képest. Érdemes lehet vele foglalkozni.
- A hozzászóláshoz be kell jelentkezni
"JavaFX-ből viszont egyelőre hiányzik a mobil támogatás (Android, iOS). "
http://javafxports.org
Elvileg be lesz építve a Javába.
- A hozzászóláshoz be kell jelentkezni
Úúú nagyon örülök ennek a topic-nak, két okból is.
1, Pont most gondolkodom azon, hogy le kéne cserélni a Swing app-jainkat amik a terminálokon (normális PC) futnak.
2, Mi is most fejlesztünk egy Cordova app-ot, Angular alapokon. Sajnos azt kell mondjam, hogy a plugin-ok megbízhatatlanok és kaotikusak. A WP8 kompatibilitás meg katasztrófa. Szerintem az mindent elárul, hogy míg Android-ra ott a Chrome, IOS-re ott a Safari, addig WP-re nincs mód arra, hogy debuggold a telefonra deployolt JavaScript app-ot. Illetve egyetlen megoldást találtam a neten, de a debugger is olyan volt, hogy előtte azt kellett debuggolni, hogy működjön a dolog.
Ami számomra inkább érdekes most az az 1. pont.
Én valami olyasmire gondoltam, hogy egy browser-ben futó HTML5 app-ra cserélném le a Swing-es megoldást. Ezek az egyes terminálklienseken standalone programként futnának, mint egy rendes kliensszoftver. Csak még arra nem jöttem rá, hogy hogyan lehet megoldani, hogy a browserben futó app egy HTTP szerver is legyen egyben, mert a Swing program is úgy működik, hogy várja a szervertől a requesteket és aztán váltja a screen-t. Illetve van amikor ő küld adatot a szerver felé, tehát kétirányú a kommunikáció. Szerintem minden X másodpercben pingelni a szervert, hogy van-e új state, az nem egy szép megoldás.
Ha erre van ötletetek, vagy működő megoldásotok akkor ne tartsátok vissza.
- A hozzászóláshoz be kell jelentkezni
Kétirányú kommunikációra amit lehet hogy érdemes megnézni a long-polling/comet, de inkább html5 server-sent events (eventsource), vagy websocket.
- A hozzászóláshoz be kell jelentkezni
Longpoll gány.
Comet pedig SSE vagy WS megléte esetén tök felesleges, kivéve ha régi böngészőt (is) akar használni a kunde, és kell fallback.
- A hozzászóláshoz be kell jelentkezni
Szia,
simán websocket-tel fel tudsz építeni egy kapcsolatot, mi is ezt csináltuk (nálunk a kommunikáció asn.1-ben történt...)
- A hozzászóláshoz be kell jelentkezni
Mivel mi Spring-ezünk, ezért legelsőnek azt néztem meg, hogy hogyan lehetne Spring-el megoldani ezt a WebSocket dolgot. A Spring 4 már támogatja a WebSocket-eket.
Viszont a példákat elnézve nem nagyon értettem meg az elvet. Az összes leírásban az van, hogy setup-olj fel egy Spring Controller szerű valamit, mappold fel az URL-eket és ha jön a WebSocket request, akkor majd megy rá a válasz. Hát ez eddig is ment, WebSocket nélkül is...
Hol van az a rész mikor mondjuk a business logic-ból jön egy event és azt akarom mondani, hogy akkor most az XY azonosítójú WebSocket váltson state-et?
Szóval azt a részt nem értem mikor én szólítom meg a browser oldalt, anélkül hogy a browser bármit is csinált volna...
Itt az egyik példa amit néztem.
- A hozzászóláshoz be kell jelentkezni
A websocket az lényegében pont úgy működik, mint egy tcp/ip socket kapcsolat, és kb. pont ugyanazt nyújtja. Nálunk ez úgy néz ki, hogy van egy szerver, amihez tcp/ip-n lehet kapcsolódni, és a bináris adatok asn.1 enkódolva mennek. Eddig egy swing-es kliensünk volt, ami csatlakozott a szerverhez. Ezt most lecseréltük egy olyan kombinációra, hogy van egy előtét appunk, ami a szerverhez csatlakozik, és lényegében egy standard socket - websocket proxy, és a kliensünk pedig ennek a proxynak a websocket lábához. Mivel GWT-ben fejlesztünk, ezért elég könnyen át tudtuk venni az eddig is meglévő logikánkat, illetve az asn.1 osztályokat, így a kódunk egy része simán közös tudott maradni. A logika a szerver oldalon van lekódolva, a kliens felé csak kb. annyit küld, hogy itt vannak ezek a panelok, jelenítsd meg őket, ahogy tudod, a kliens felől pedig utasítások jönnek: erre meg arra az elemre klikkelt, stb.
A websocket előnye, hogy egy kétirányú kapcsolatod van, tehát nincs polling, meg ilyesmi, csomagok jönnek és mennek, annyi extrával, hogy biztosítva van, hogy a csomag egyben érkezik meg, nem pedig darabokban.
Igazából jó lenne tudni, hogy nálatok mi a logika, úgy jobban el lehetne dönteni, hogy ez-e a jó irány számotokra, vagy valami más.
- A hozzászóláshoz be kell jelentkezni
A WebSocket-tel esetleg még arra figyelni kell, hogy nem minden "proxy"-n megy át.
Például Apache-on nem megy át proxyzva, de Nginx-en átmegy szépen.
- A hozzászóláshoz be kell jelentkezni
"Például Apache-on nem megy át proxyzva, de Nginx-en átmegy szépen."
Ööö... izé... meg kell beszélnem az Apache Httpd szerveremmel, hogy valamit elnézett, mert átmegy.
http://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html
- A hozzászóláshoz be kell jelentkezni
Én még csak erről tudtam: https://issues.apache.org/bugzilla/show_bug.cgi?id=47485
- A hozzászóláshoz be kell jelentkezni
Én meg használom fél éve, több WildFly node van több Apache Http mögött és gond nélkül megy a WebSocket proxy...
- A hozzászóláshoz be kell jelentkezni
A logika nagyon hasonló (pont az) ahhoz amit te leírtál.
Van egy JBoss-on futó Java app és van több kliens PC (terminál) amiken egy Swing app fut. A termináloknak nincs saját businesslogic-juk, csak simán mutatják a "paneleket" és ha kapnak a szervtől egy requestet akkor panelt váltanak. Illetve ha a user megnyom egy gombot a kliensen oldalon akkor azt elküldjük a szerver felé.
Ezt a Swing appot szeretném esetleg átköltöztetni browserbe (először csak úgy magamnak PoC szinten) és JS+HTML5-el megoldani. Csak ugye a Swing app amikor elindul, akkor indít egy kis HTTP szervert is, amit a browserből nem tudok megoldani. Erre lenne megoldás a WebSocket, csak nem tudom, hogy hogyan lehet a WebSocketet Spring MVC-vel vagy REST szerűen megoldani.
- A hozzászóláshoz be kell jelentkezni
Szia,
dobj egy privát üzit, aztán lebeszéljük valami skype félén...
- A hozzászóláshoz be kell jelentkezni
JBoss mennyi? Java EE 7-től van normálisnak mondható WebSocket támogatás, pár annotáció és REST+JSON megy WebSocket-en... WildFly 8.1-et ajánlanék, nekem nagyon bevált.
--
http://wiki.javaforum.hu/display/~auth.gabor/Home
- A hozzászóláshoz be kell jelentkezni
Mi még JBoss 5-öt használunk, de először amúgy is csak egy PoC-ot szeretnék otthon összedobni, szóval nem gond az újabb verzió. Tudsz esetleg valami példakódot mutatni a REST+JSON dologra?
- A hozzászóláshoz be kell jelentkezni
Azért a JBoss 5 már elég öregecske... :)
Példa EJB+REST szerver oldalra:
http://svn.javaforum.hu/svn/gacivs/gacivs-backend/trunk/gacivs-backend/…
Példa WebSocket szerver oldalra:
http://svn.javaforum.hu/svn/gacivs/gacivs-backend/trunk/gacivs-backend/…
- A hozzászóláshoz be kell jelentkezni
Köszönöm a példákat!
A fentebbieken felbátorodva, feldobtam egy IntelliJ-t (életemben nem használtam eddig) és összeraktam egy HelloWorld-ot Java 7-el meg Wildfly 8.1-el, meg EJB-vel (egyik el sem volt még dolgom :)).
Sok mindent megértek azért, de a Spring-es XML-ben injektálunk, meg *-servlet.xml routolunkhoz képest eléggé más világ, plusz egy hotkey-t sem ismerek az IntelliJ-ben, de már annyira untam a munkahelyi tool-okat, hogy valami izgalmast akartam.
Na a lényeg, hogy mutattad ezt a két osztályt és amit nem értek, hogy miért vannak ezek a class-ok a backend package-ben, mikor ezek az osztályok az én értelmezésemben olyanok mint a frontend controllerek, tehát ők csak elkapják a requestet/websocket kommunikációt (mondjuk DTO-ba csomagolják ha kell) és tovább dobják a backendnek.
Illetve egy EJB kezdő kérdés: A Service/Manager oldalon megértem, hogy miért van szükség a Stateless annotációra, de a frontend class-okban mit szolgálnak, nem elég ha nem definiálok global variable-t? Illetve mi történik, ha elhagyom ezeket az annotációkat?
- A hozzászóláshoz be kell jelentkezni
"Sok mindent megértek azért, de a Spring-es XML-ben injektálunk, meg *-servlet.xml routolunkhoz képest eléggé más világ,"
Nincs XML. Néhány annotáció van csak. :)
"Na a lényeg, hogy mutattad ezt a két osztályt és amit nem értek, hogy miért vannak ezek a class-ok a backend package-ben, mikor ezek az osztályok az én értelmezésemben olyanok mint a frontend controllerek, tehát ők csak elkapják a requestet/websocket kommunikációt (mondjuk DTO-ba csomagolják ha kell) és tovább dobják a backendnek."
Mert a frontend az vagy natív mobil alkalmazás vagy egy Javascript-es MVC... mostanság már nem szokás olyan frontend-et készíteni, amelynek egy része a szerveren fut.
"A Service/Manager oldalon megértem, hogy miért van szükség a Stateless annotációra, de a frontend class-okban mit szolgálnak, nem elég ha nem definiálok global variable-t?"
Ezt most nem teljesen értem. :)
"Illetve mi történik, ha elhagyom ezeket az annotációkat?"
Nem fog működni.
--
http://wiki.javaforum.hu/display/~auth.gabor/Home
- A hozzászóláshoz be kell jelentkezni
Amennyiben az Android + iOS platform a cél, akkor Java alapú keresztplatformos fejlesztésre több megoldás is van.
Az egyik ilyen a Migeran, amit mi fejlesztünk (full disclosure!).
Az első nyilvános verziónkat a hétvégén fogjuk kiadni. Emellett december elejéig a teljes platformot nyílt forráskódúvá tesszük.
Az Android ART runtime-ot portoltuk iOS-re, közben továbbfejlesztettük az ART debuggerét is, amely mergelés előtt áll a hivatalos Android forrásba. (Kis kitérő: bizonyos esetekben az ART debugger "step over" művelete 10 - 30 percig tartott. Ezt sikerült a normális <1s tartományba lenyomni.)
Persze az ART önmagában csak egy VM. A Migeran a teljes iOS API-t hozzáférhetővé teszi, egy új Java to native library, a Nat/J segítségével. A fő különbség a többi hasonló eszközhöz képest, hogy a Nat/J Generator segítségével nem kézzel kell ezeket a bindingokat karbantartani, hanem automatikusan generálódnak. Természetesen kézi kiegészítésekre is van lehetőség, ezeket a generátor nem módosítja.
A Java nyelv mellett a Scala-t is támogatjuk, de bármilyen Android ART-on működő nyelvet lehet használni. A Gradle-t használjuk buildeléshez, jelenleg Eclipse IDE-be integrálódunk (pl. speciális code assist az objective-c specifikus funkciókhoz, futtatás, debuggolás), de az Intelli/J-t is tervezzük támogatni.
Sok nem triviális projektben előkerül, hogy bizonyos részeket natív eszközökkel kellene fejleszteni, vagy meglevő natív komponenseket felhasználni. A Migeran esetében ez nagyon kényelmesen működik: a natív komponenseket fejlesztheti Xcode-ban, amit a Nat/J segítségével
elérhetővé lehet tenni Java-ból.
Még sokat írhatnék, de már így is elég hosszú lett.
Meg kell említenem két másik lehetőséget is:
1. Codename One: Egy Swing szerű, keresztplatformos API-t készítettek, ami működik sok platformon. iOS-re korábban XMLVM-mel fordítottak, most egy új saját VM-en dolgoznak, ami még nem nyílt forrású. Az üzleti modelljük cloud alapú fordításra épül: elküldöd nekik a forrást, kapsz vissza kész appot. Van egy Java SE alapú szimulátoruk, amivel bármilyen platformon fejleszthetsz, de a célhardveren hibakeresés, illetve a natív kódok integrálása nem egyszerű.
2. RoboVM: Saját Ahead of Time VM LLVM-re építve, nyílt forrású projekt. Dolgoznak az iOS API támogatáson, részben készen van. Jelenleg nincs debugger támogatásuk, bár igérik, hogy lesz.
A különböző lehetőségek (+ Xamarin + Cordova ... etc.) összehasonlításáról fogok beszélni az App!Mobile konferencián, illetve egy hosszabb Migeran tutorial is lesz a szegedi Szabad Szoftver Konferencián.
Üdv,
Gergely
- A hozzászóláshoz be kell jelentkezni
sub
Sic Transit Gloria Mundi
- A hozzászóláshoz be kell jelentkezni
cool, ez nagyon menőnek néz ki...
A hosszabb tutorial elérhető lesz videó formájában?
(sub)
--
blogom
- A hozzászóláshoz be kell jelentkezni
FYI: A Migeran már elérhető nyilvánosan is: http://blog.migeran.com/2014/11/get-started-with-migeran.html
- A hozzászóláshoz be kell jelentkezni
Felkerült az App Store-ba a Migeran-nal készült iOS App a holnapi Szabad Szoftver konferenciához:
https://itunes.apple.com/us/app/sfd-2014/id941895736?ls=1&mt=8
- A hozzászóláshoz be kell jelentkezni
És hogy a topic címéhez is illeszkedjünk, már elindult az első JavaFX alkalmazás Migeran-on:
- A hozzászóláshoz be kell jelentkezni
sub
- A hozzászóláshoz be kell jelentkezni
Xamarin? (Kisg előadása engem is érdekel)
Android-ot, iOS-t, WP8-at támogatja, desktopra meg WPF.
Csak egy egészen vékony réteget kell platformfüggőre megírni.
Fuszenecker_Róbert
- A hozzászóláshoz be kell jelentkezni
És pont a napokban lett full ingyenes a diákoknak, Magyarországon is
- A hozzászóláshoz be kell jelentkezni
Én megfontolnám a HTML5+CSS3+JS kombinációt, meglepő dolgokra képes mostanában...
--
http://wiki.javaforum.hu/display/~auth.gabor/Home
- A hozzászóláshoz be kell jelentkezni