←Older revision |
Revision as of 03:28, 9 May 2016 |
Line 3: |
Line 3: |
| == Porting [[MineSweeper]] == | | == Porting [[MineSweeper]] == |
| | | |
- | Since [[I]] [[AppStoreTheEnd|gave up on Apple]] and decided [[I]] don't want to pay that company money for nothing, [[I]] was searching for somebody who would distribute my [[MineSweeper]] application on [[iOS]]. At the end, the [[ControlsJS]] guys agreed to do it, but only if the application starts using [[ControlsJS]]. | + | Since [[I]] [[AppStoreTheEnd|gave up on Apple]] and decided [[I]] don't want to pay that company money for nothing, [[I]] was searching for somebody who would distribute my [[MineSweeper]] application on [[iOS]]. At the end, the [[ControlsJS]] guys agreed to do it, but only if the application starts using [[ControlsJS]]. As a result of this experiment we now have two completely different UI, for the same application code: |
| + | |
| + | * http://controlsjs.com/demos/minesweeper/ - the new [[ControlsJS|Controls]] for [[Java]] version |
| + | * http://xelfi.cz/minesweeper/bck2brwsr/ - the original [[MineSweeper]] as written by me |
| + | |
| + | Under the hood both versions are almost the same. They only differ in the rendering technology. And here is the [[iOS]] application: |
| + | |
| + | https://itunes.apple.com/us/app/controls.js-fair-minesweeper/id1110702611 |
| + | |
| + | Thanks a lot for providing my [[MineSweeper]] to [[iOS]] users, dear [[ControlsJS]] guys! |
| + | |
| + | == Write Business Logic, Choose UI later == |
| + | |
| + | The code for the [[ControlsJS|Controls]] [[MineSweeper]] is available on github: https://github.com/controlsjs/minesweeper - while inspecting the code changes [[I]] noticed that the core application logic in [https://github.com/controlsjs/minesweeper/blob/55549f4a68019706a80406c79f6af270f11410da/client/src/main/java/com/controlsjs/demo/minesweeper/MinesModel.java MinesModel.java] hasn't changed at all (almost - it doesn't make sense to count one [https://github.com/controlsjs/minesweeper/commit/55549f4a68019706a80406c79f6af270f11410da?diff=long#diff-59bc0db8375ee7490ee96e4fe102033c additional property] and removed ''goto links'' handling due to simplified UI). |
| + | |
| + | Such extreme portability of [[DukeScript]] application is made possible by flexible design of [http://bits.netbeans.org/html+java/1.3/net/java/html/json/Model.html the core annotations] and absolute separation of the application logic code from the UI. |
| + | |
| + | As an implication you can focus on your code, provide draft version of UI, and later, completely throw the UI away and redesign it in a much better way. Changes are high you will not touch your application code at all! |
| + | |
| + | Moreover you can completely change the UI technology. Start with classical [[HTML4Java]] solution and later switch to [[ControlsJS]] - given the rich set of tools they offer including [[Wysiwig]] form editor, it may really boost your productivity. |