Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Build Your Own Crossplatform Tool in Java

Build Your Own Crossplatform Tool in Java

Writing cross-platform apps is always though. You spend ages to find a right tool for you or your company and then struggle to fix all the bugs and production issues in your app. Or you go with a Write Once Show in Web way using Apache Cordova. In his talk Alexey will sum up the issues of crossplatform development, bring up the major things you need in your cross-platform tool and explain how to build one with Java.

Alexey Buzdin

December 16, 2014
Tweet

More Decks by Alexey Buzdin

Other Decks in Programming

Transcript

  1. Alexey Buzdin December 2014 Build Your Own Cross-platform Tool in

    Java
  2. Alexey Buzdin Skill set Affilations

  3. * X-platformers * build one * Dream next Agenda

  4. platforms* *big 4

  5. ANything*

  6. ANything* JS+HTMl

  7. ANything* JS+HTMl java+C

  8. ANything* JS+HTMl java+C C+Obj-C+Swift

  9. C+Obj-C+Swift ANything* JS+HTMl java+C Something Increadable!

  10. -platform

  11. None
  12. the X-platformer

  13. -speed the X-platformer

  14. -speed -code reuse the X-platformer

  15. -speed -code reuse -native interop the X-platformer

  16. -speed -code reuse -friendly ecosystem -native interop the X-platformer

  17. -speed -code reuse -friendly ecosystem -native interop the X-platformer -native

    look and feel
  18. X-platformers

  19. January 2014

  20. december 2014

  21. top grossing

  22. Web view compile to native* External runtime X-types

  23. W A R O

  24. Write Anywhere Run Once

  25. Wora X-platformers

  26. -not native ui -browser wars -adaptive design -performance?

  27. W E A o

  28. Write everywhere adapt once

  29. Woae X-platformers

  30. -native ui -limited API -UI Builder

  31. None
  32. W E r o

  33. Write everywhere reuse Once try to

  34. features -compile to assemblies -java proxies +Mono runtime android iOs

    -native clients
  35. features -compile to assemblies -java proxies +Mono runtime android iOs

    -native clients -native/independent ui -library binding
  36. None
  37. cons -c# not native for big 4 -ide problems -Unstable

    Infrastructure -monthly subscription
  38. verbosity extendability

  39. Build Your Own Cross-platform Tool in Java Lets get started!

  40. why java? * mature infrastructure

  41. why java? * gazzilion libraries * mature infrastructure

  42. why java? * native to android * gazzilion libraries *

    mature infrastructure
  43. why java? * native to android * gazzilion libraries *

    mature infrastructure * great ides
  44. why java? * today is jug :) * native to

    android * gazzilion libraries * mature infrastructure * great ides
  45. architecture

  46. architecture server client

  47. architecture server shared client-shared client

  48. -server -shared -client-shared -client-android -client-ios -client-web (aka - domain)

  49. -server -shared -client-shared -client-android -client-ios -client-web spark android robovm gwt

  50. None
  51. web

  52. www.m-gwt.com web + mobile

  53. vanilla

  54. None
  55. -Java bytecode to native java library reuse

  56. -Java bytecode to native -familiar infrastructure gradle, maven, Idea, eclipse

    java library reuse
  57. -Java bytecode to native -familiar infrastructure gradle, maven, Idea, eclipse

    java library reuse -ios lib binding gradle, maven, Idea, eclipse
  58. robovm on javaone

  59. -no dynamic jni

  60. -no dynamic jni -no code generation

  61. -no dynamic jni -no code generation -no xcode ui bindings

    supports dynamic .xib loading
  62. -no dynamic jni -no code generation -has reflection support -no

    xcode ui bindings jackson or gson should work supports dynamic .xib loading
  63. None
  64. code reuse?

  65. dependency injection need you

  66. Service Service Android Impl iOS Impl shared client- specific

  67. which di?

  68. which di? guice or weld!

  69. which di? guice or weld! no code generation sorry on

    and
  70. ever heard of Dagger? http://square.github.io/dagger/

  71. COMPILE-TIME CODE GENERATION!* Dagger features

  72. COMPILE-TIME CODE GENERATION!* Dagger features *partially

  73. COMPILE-TIME CODE GENERATION!* Dagger features *partially sorry won’t work on

    and
  74. ever heard of Dagger 2.0? http://google.github.io/dagger/

  75. COMPILE-TIME CODE GENERATION! Dagger 2.0 features

  76. COMPILE-TIME CODE GENERATION! Dagger 2.0 features will work on and

  77. None
  78. Dreams of the future past -common validation -common localization -common

    resources -common persistence jsr-303
  79. q&a