SlideShare a Scribd company logo
N E W A N D R O I D
L A N G U A G E S
J A V I E R G A M A R R A : : @ N H PA T T
@ N H PAT T
@ A G I L E C Y L
( 0 9 / 0 5 ! )
@ L I F E R AY
by wiredforlego
W H Y ?
by keso s
by Julochka
S E L F - E S T E E M
K C Y. M E / 2 2 N A N
S W I F T F O R A N D R O I D ?
by Andreas
G R O O V Y
S C A L A
X T E N D
S W I F T
K O T L I N
H O W M A N Y L A N G U A G E S
H AV E A N D R O I D “ S U P P O R T ” ?
• Scala
• Kotlin
• Groovy
• Clojure
• Go
• Ceylon
• XTend
• JS
• C++
• C#
• PHP
• Python
• Ruby
• Swift
• QT
• Perl
• Pascal
• Smalltalk
A N Y L A N G U A G E …
T H AT ’ S W H Y
• JS
• C++
• C#
• PHP
• Scala
• Kotlin
• Groovy
• Go
• Ceylon
• XTend
H O W ?
• Small TODO app
• Uploaded soon to github
• Big post coming to nhpatt.com
F I G H T !
by wiredforlego
X T E N D
by Mike
X T E N D - W H AT ?
• xtend & xtendroid
• 2011!
X T E N D - H O W ?
• Eclipse IDE + SDK, Android Studio incoming?
• About 40 minutes
X T E N D - C O D E
@AndroidActivity(R.layout.activity_main) class MainActivity {
@OnCreate
def init(Bundle savedInstanceState) {
}
}
X T E N D - C O D E
myButton.onClickListener = [
toast("My message");
]
X T E N D - C O D E
val toUpperCaseFunction = [String s|s.toUpperCase]
X T E N D - T H I N G S
• Extension methods
• Lambda expressions
• Implicits
• Operator overloading
• Compiles to Java Code
X T E N D - O P I N I O N
• Perfect for consulting companies
• Everything does too much
• Java+
G R O O V Y
by Bill Toenjes
G R O O V Y - W H AT ?
• dynamic (2003) & static (2012!)
G R O O V Y - H O W ?
• Android Studio, Groovy Gradle Plugin
• In groovy folder
• About 30 minutes
• SwissKnife
G R O O V Y - C O D E
def message = findViewById(R.id.message) as TextView

message.text = messageText;
G R O O V Y - C O D E
button.onClickListener = {startActivity(intent)}
@OnClick
G R O O V Y - T H I N G S
• Dynamic code & static code (@CompileStatic)
• Traits
• Better apis
• Great gradle integration (dagger support coming)
G R O O V Y - S TAT I C
G R O O V Y - R U N T I M E
G R O O V Y - O P I N I O N
• Java++
• Dynamic code?
• I like groovy but…
C E Y L O N
by Mike
C E Y L O N - W H AT ?
• Ceylon
• Gavin King
• 2011
C E Y L O N - H O W ?
• Eclipse IDE + Ceylon Plugin + PAIN
• About 6 hours (eclipse hell + ceylon hell)
A N D R O I D D O C U M E N TAT I O N
A N D R O I D D O C U M E N TAT I O N
C E Y L O N - C O D E
shared actual void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.Ilayout.activity_main);
assert (is TextView textView = findViewById(R.Iid.action_settings));
}
C E Y L O N - T H I N G S
• Type system
• Mixins
• String?
• Packages and modules inside Ceylon
C E Y L O N - O P I N I O N
• Not ready. Future?
• Doubt so.
S C A L A
by Mike
S C A L A - W H AT ?
• Scala
• 2003
S C A L A - H O W ?
• Gradle plugin?
• Post 47 degrees: Idea + plugins + SBT + activator…
• About 1 hour
T R O L L I N G S C A L A
• findView without casts -> a trait
• scala one liners -> hard to read by others but nice in collections
• scala -> 2.8M with proguard -> heaviest environment
• NPE -> with optionals, great solution IMHO
• implicit context -> magic everywhere
• traits -> quite common (kotlin, ceylon, ‘groovy’…)
• no getters/setters -> quite common
• pattern matching -> it’s nice but pure functional style
• case classes -> a glorified switch/if
S C A L A - T H I N G S
• Types
• Multiple programming styles
• Optional
S C A L A - O P I N I O N
• I love scala, way better than Java, but…
• Paradigm swift
• Programmers (25 in TIOBE)
S C A L A - S C A L O I D
new SVerticalLayout {
STextView("Sign in").textSize(24.5 sp).<<.marginBottom(25 dip).>>
STextView("ID")
SEditText()
STextView("Password")
SEditText() inputType TEXT_PASSWORD
SButton("Sign in")
this += new SLinearLayout {
SButton("Help")
SButton("Sign up")
}.wrap
}.padding(20 dip)
S C A L A - M A C R O I D
// the layout goes here
setContentView {
getUi {
l[LinearLayout](
w[Button],
w[TextView]
)
}
}
G O
by Nico Kaiser
G O - W H AT ?
• Go
• 2009
G O - W H AT ?
“ W h o s e b e t t i n g t h i s y e a r s I / O w i l l
a n n o u n c e t h e re p l a c e m e n t o f t h e
A n d ro i d A P I w i t h t h e G o A P I ? “
“ I l l o g i c a l , i r re s p o n s i b l e , i n s a n e
p e o p l e a re b e t t i n g t h i s . ”
“ G o , f o r C p e o p l e w h o h a t e
C + + b u t a re t o o a f r a i d o f re a l
I D E s f o r J a v a . ”
J a k e W h a r t o n
G O - H O W ?
• Docker image (docker -> boot2docker -> missing
steps -> worst hello world ever!)
• About 2 hours (image is 4GB! + docker errors + no
documentation)
G O - C O D E
• 2 ways:
• Shared Library (JNI…)
• All go
G O - C O D E
• var State
• func Run
• type Callbacks (Start, Stop, Draw)
• Stubs
G O - O P I N I O N
• API for OpenGL/business logic
• Not ready for “classic” app.
• I’m worried about iOS support
K O T L I N
by Mike
K O T L I N - W H AT ?
• Kotlin
• 2011
K O T L I N - H O W ?
• Android Studio plugin
• About 10 minutes
K O T L I N - T H I N G S
• Traits
• Interoperability with Java!
• Extension Methods
• Null?
T R O L L I N G K O T L I N
• class Leiva : Untrollable
K O T L I N - O P I N I O N
• I love Kotlin.
• Really easy learning curve.
• Few programmers doing Kotlin :(
J AVA 8
asdasdasdby Mike
J AVA 8
• JDK7: <>, multi-catch, strings in switches, try with
resources…
• And java NIO/invokedynamic?
J AVA 8
• And Java 8? (Lambdas/default methods/new date
API…)
• Jack & Jill?
R E T R O L A M B D A
asdasdasdby Marcos Bessa
R E T R O L A M B D A - W H AT ?
• Lambdas
• Default Methods
• Static Methods on interfaces
R E T R O L A M B D A - H O W ?
• Gradle Plugin
• About 30 minutes
R E T R O L A M B D A - C O D E
(View v) -> Toast.makeText(this, “Hi!”, LENGTH_SHORT).
R E T R O L A M B D A - O P I N I O N
• An incomplete hack.
• Nice if you don’t have any other option.
A N D T H E T R O P H I E S G O T O …
G O
F O R B E I N G T H E
M O S T H Y P E D
by David Luders
C E Y L O N
F O R N O T
B E I N G T H E R E
by David Luders
S C A L A
C O N S O L AT I O N
P R I Z E
by David Luders
K O T L I N
by David Luders
F I N A L W O R D S
by jmiguel rodriguez
N O T A N E W Q U E S T I O N
T H AT M E A N S S O M E T H I N G
N O T O N LY S Y N TA C T I C S U G A R
asdasdasdby Steve Maw
D A R T A N Y O N E ?
by Sasha Nilov
N E X T
asdasdasdby Pascal
E N D *
* ¿ A L G U I E N Q U I E R E Q U E L E M O N T E U N
E N T O R N O ?
asdasdasdby Gord McKenna
A N Y Q U E S T I O N S ?
T H A N K S ! - > K C Y. M E / 2 2 N D 2
by Ale Art
O K … K O T L I N V S S C A L A , F I G H T !
O K … K O T L I N V S S C A L A , F I G H T !
O K … K O T L I N V S S C A L A , F I G H T !
O K … K O T L I N V S S C A L A , F I G H T !
O K … K O T L I N V S S C A L A , F I G H T !
• Kotlin ppl are nice: comparison to scala -> if u are
already using Scala or need sth on that list…
• A good, external, comparison
O K … K O T L I N V S S C A L A , F I G H T !
• The main design goals behind “Kotlin” are:
• To create a Java-compatible language,
• That compiles at least as fast as Java,
• Make it safer than Java, i.e. statically check for common pitfalls such as
null pointer dereference,
• Make it more concise than Java by supporting variable type inference,
higher-order functions (closures), extension functions, mixins and first-
class delegation, etc;
• And, keeping the useful level of expressiveness (see above), make
it way simpler than the most mature competitor – Scala.
N E W A N D R O I D
L A N G U A G E S
J A V I E R G A M A R R A : : @ N H PA T T

More Related Content

Viewers also liked

Arduino - Cuarta sesión
Arduino - Cuarta sesiónArduino - Cuarta sesión
Arduino - Cuarta sesión
Javier Gamarra
 
CAS 2013
CAS 2013CAS 2013
CAS 2013
Javier Gamarra
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5
Javier Gamarra
 
Problemas Propuestos Condicionales Compuestos
Problemas Propuestos Condicionales CompuestosProblemas Propuestos Condicionales Compuestos
Problemas Propuestos Condicionales Compuestos
Diego Fernando Castaño sepulveda
 
Opinionated android
Opinionated androidOpinionated android
Opinionated android
Javier Gamarra
 
Taller de Arduino en Cylicon Valley - Semana 2
Taller de Arduino en Cylicon Valley - Semana 2Taller de Arduino en Cylicon Valley - Semana 2
Taller de Arduino en Cylicon Valley - Semana 2
Roberto Santana Valdés
 
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker SpaceCurso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Tenerife Maker Space
 
Modos de servicio_para_tv_chinos (1)
Modos de servicio_para_tv_chinos (1)Modos de servicio_para_tv_chinos (1)
Modos de servicio_para_tv_chinos (1)
EDITH LLERENA
 
Arduino - Tercera sesión
Arduino - Tercera sesiónArduino - Tercera sesión
Arduino - Tercera sesión
Javier Gamarra
 
5 meses de juegos ágiles
5 meses de juegos ágiles5 meses de juegos ágiles
5 meses de juegos ágiles
Javier Gamarra
 
Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in android
Javier Gamarra
 
Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Taller de Arduino básico. Tenerife Maker Space. Nivel 2Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Tenerife Maker Space
 
RxJava in practice
RxJava in practice RxJava in practice
RxJava in practice
Javier Gamarra
 
Actividades de-lectoescritura-05
Actividades de-lectoescritura-05Actividades de-lectoescritura-05
Actividades de-lectoescritura-05
EDITH LLERENA
 
Introducción a Arduino (TLP2014)
Introducción a Arduino (TLP2014)Introducción a Arduino (TLP2014)
Introducción a Arduino (TLP2014)
Tenerife Maker Space
 
Introducción a Arduino. Tenerife Maker Space. Nivel 1
Introducción a Arduino. Tenerife Maker Space. Nivel 1Introducción a Arduino. Tenerife Maker Space. Nivel 1
Introducción a Arduino. Tenerife Maker Space. Nivel 1
Tenerife Maker Space
 
BlueWeekend iOT
BlueWeekend iOTBlueWeekend iOT
BlueWeekend iOT
Tenerife Maker Space
 
Cuestionario, checklist, inspecccion, entrevista
Cuestionario, checklist, inspecccion, entrevistaCuestionario, checklist, inspecccion, entrevista
Cuestionario, checklist, inspecccion, entrevista
HildaMarroquin91
 
Cambiar una empresa con juegos ágiles
Cambiar una empresa con juegos ágilesCambiar una empresa con juegos ágiles
Cambiar una empresa con juegos ágiles
Javier Gamarra
 
Tema2.componenteselectrónicos%28 alumnos%29
Tema2.componenteselectrónicos%28 alumnos%29Tema2.componenteselectrónicos%28 alumnos%29
Tema2.componenteselectrónicos%28 alumnos%29
EDITH LLERENA
 

Viewers also liked (20)

Arduino - Cuarta sesión
Arduino - Cuarta sesiónArduino - Cuarta sesión
Arduino - Cuarta sesión
 
CAS 2013
CAS 2013CAS 2013
CAS 2013
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5
 
Problemas Propuestos Condicionales Compuestos
Problemas Propuestos Condicionales CompuestosProblemas Propuestos Condicionales Compuestos
Problemas Propuestos Condicionales Compuestos
 
Opinionated android
Opinionated androidOpinionated android
Opinionated android
 
Taller de Arduino en Cylicon Valley - Semana 2
Taller de Arduino en Cylicon Valley - Semana 2Taller de Arduino en Cylicon Valley - Semana 2
Taller de Arduino en Cylicon Valley - Semana 2
 
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker SpaceCurso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
 
Modos de servicio_para_tv_chinos (1)
Modos de servicio_para_tv_chinos (1)Modos de servicio_para_tv_chinos (1)
Modos de servicio_para_tv_chinos (1)
 
Arduino - Tercera sesión
Arduino - Tercera sesiónArduino - Tercera sesión
Arduino - Tercera sesión
 
5 meses de juegos ágiles
5 meses de juegos ágiles5 meses de juegos ágiles
5 meses de juegos ágiles
 
Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in android
 
Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Taller de Arduino básico. Tenerife Maker Space. Nivel 2Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Taller de Arduino básico. Tenerife Maker Space. Nivel 2
 
RxJava in practice
RxJava in practice RxJava in practice
RxJava in practice
 
Actividades de-lectoescritura-05
Actividades de-lectoescritura-05Actividades de-lectoescritura-05
Actividades de-lectoescritura-05
 
Introducción a Arduino (TLP2014)
Introducción a Arduino (TLP2014)Introducción a Arduino (TLP2014)
Introducción a Arduino (TLP2014)
 
Introducción a Arduino. Tenerife Maker Space. Nivel 1
Introducción a Arduino. Tenerife Maker Space. Nivel 1Introducción a Arduino. Tenerife Maker Space. Nivel 1
Introducción a Arduino. Tenerife Maker Space. Nivel 1
 
BlueWeekend iOT
BlueWeekend iOTBlueWeekend iOT
BlueWeekend iOT
 
Cuestionario, checklist, inspecccion, entrevista
Cuestionario, checklist, inspecccion, entrevistaCuestionario, checklist, inspecccion, entrevista
Cuestionario, checklist, inspecccion, entrevista
 
Cambiar una empresa con juegos ágiles
Cambiar una empresa con juegos ágilesCambiar una empresa con juegos ágiles
Cambiar una empresa con juegos ágiles
 
Tema2.componenteselectrónicos%28 alumnos%29
Tema2.componenteselectrónicos%28 alumnos%29Tema2.componenteselectrónicos%28 alumnos%29
Tema2.componenteselectrónicos%28 alumnos%29
 

Similar to New Android Languages

High quality Front-End
High quality Front-EndHigh quality Front-End
High quality Front-End
David Simons
 
The Swift Architect
The Swift ArchitectThe Swift Architect
The Swift Architect
Natasha Murashev
 
Testable JavaScript Strategies
Testable JavaScript StrategiesTestable JavaScript Strategies
Testable JavaScript Strategies
Diwa Del Mundo
 
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on ScalaAndrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
Scala Italy
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactor
cklosowski
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactor
cklosowski
 
Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019
Michał Kurzeja
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
tdc-globalcode
 
React for Beginners
React for BeginnersReact for Beginners
React for Beginners
Derek Willian Stavis
 
Witchcraft
WitchcraftWitchcraft
Witchcraft
Brooklyn Zelenka
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code
David Danzilio
 
Software Quality
Software QualitySoftware Quality
Software Quality
jakubkoci
 
Java 20
Java 20Java 20
Java 20
Joe Kutner
 
Release Engineering and Rugged DevOps: An Intersection?
Release Engineering and Rugged DevOps: An Intersection?Release Engineering and Rugged DevOps: An Intersection?
Release Engineering and Rugged DevOps: An Intersection?
SeniorStoryteller
 
WordPress for the 99%
WordPress for the 99%WordPress for the 99%
WordPress for the 99%
Stephanie Leary
 
Release Engineering & Rugged DevOps: An Intersection - J. Paul Reed
Release Engineering & Rugged DevOps: An Intersection - J. Paul ReedRelease Engineering & Rugged DevOps: An Intersection - J. Paul Reed
Release Engineering & Rugged DevOps: An Intersection - J. Paul Reed
SeniorStoryteller
 
So You Want to Start Refactoring?
So You Want to Start Refactoring?So You Want to Start Refactoring?
So You Want to Start Refactoring?
jillianefoley
 
Monomobile
MonomobileMonomobile
Monomobile
Jérémie Laval
 
ITB2016 - ColdBox 4 Modules
ITB2016 - ColdBox 4 ModulesITB2016 - ColdBox 4 Modules
ITB2016 - ColdBox 4 Modules
Ortus Solutions, Corp
 
An Introduction to React -- FED Date -- IBM Design
An Introduction to React -- FED Date -- IBM DesignAn Introduction to React -- FED Date -- IBM Design
An Introduction to React -- FED Date -- IBM Design
Josh Black
 

Similar to New Android Languages (20)

High quality Front-End
High quality Front-EndHigh quality Front-End
High quality Front-End
 
The Swift Architect
The Swift ArchitectThe Swift Architect
The Swift Architect
 
Testable JavaScript Strategies
Testable JavaScript StrategiesTestable JavaScript Strategies
Testable JavaScript Strategies
 
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on ScalaAndrea Lattuada, Gabriele Petronella - Building startups on Scala
Andrea Lattuada, Gabriele Petronella - Building startups on Scala
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactor
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactor
 
Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
 
React for Beginners
React for BeginnersReact for Beginners
React for Beginners
 
Witchcraft
WitchcraftWitchcraft
Witchcraft
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code
 
Software Quality
Software QualitySoftware Quality
Software Quality
 
Java 20
Java 20Java 20
Java 20
 
Release Engineering and Rugged DevOps: An Intersection?
Release Engineering and Rugged DevOps: An Intersection?Release Engineering and Rugged DevOps: An Intersection?
Release Engineering and Rugged DevOps: An Intersection?
 
WordPress for the 99%
WordPress for the 99%WordPress for the 99%
WordPress for the 99%
 
Release Engineering & Rugged DevOps: An Intersection - J. Paul Reed
Release Engineering & Rugged DevOps: An Intersection - J. Paul ReedRelease Engineering & Rugged DevOps: An Intersection - J. Paul Reed
Release Engineering & Rugged DevOps: An Intersection - J. Paul Reed
 
So You Want to Start Refactoring?
So You Want to Start Refactoring?So You Want to Start Refactoring?
So You Want to Start Refactoring?
 
Monomobile
MonomobileMonomobile
Monomobile
 
ITB2016 - ColdBox 4 Modules
ITB2016 - ColdBox 4 ModulesITB2016 - ColdBox 4 Modules
ITB2016 - ColdBox 4 Modules
 
An Introduction to React -- FED Date -- IBM Design
An Introduction to React -- FED Date -- IBM DesignAn Introduction to React -- FED Date -- IBM Design
An Introduction to React -- FED Date -- IBM Design
 

Recently uploaded

Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
campbellclarkson
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
kalichargn70th171
 
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Luigi Fugaro
 
TMU毕业证书精仿办理
TMU毕业证书精仿办理TMU毕业证书精仿办理
TMU毕业证书精仿办理
aeeva
 
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
OnePlan Solutions
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
Tier1 app
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
Manyata Tech Park Bangalore_ Infrastructure, Facilities and More
Manyata Tech Park Bangalore_ Infrastructure, Facilities and MoreManyata Tech Park Bangalore_ Infrastructure, Facilities and More
Manyata Tech Park Bangalore_ Infrastructure, Facilities and More
narinav14
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
Jhone kinadey
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 
Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
KrishnaveniMohan1
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
Pedro J. Molina
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 

Recently uploaded (20)

Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
 
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
 
TMU毕业证书精仿办理
TMU毕业证书精仿办理TMU毕业证书精仿办理
TMU毕业证书精仿办理
 
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
Manyata Tech Park Bangalore_ Infrastructure, Facilities and More
Manyata Tech Park Bangalore_ Infrastructure, Facilities and MoreManyata Tech Park Bangalore_ Infrastructure, Facilities and More
Manyata Tech Park Bangalore_ Infrastructure, Facilities and More
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 
Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 

New Android Languages

  • 1. N E W A N D R O I D L A N G U A G E S J A V I E R G A M A R R A : : @ N H PA T T
  • 2. @ N H PAT T @ A G I L E C Y L ( 0 9 / 0 5 ! ) @ L I F E R AY by wiredforlego
  • 3. W H Y ? by keso s
  • 4.
  • 6. S E L F - E S T E E M
  • 7. K C Y. M E / 2 2 N A N
  • 8. S W I F T F O R A N D R O I D ? by Andreas
  • 9. G R O O V Y
  • 10. S C A L A
  • 11. X T E N D
  • 12. S W I F T
  • 13. K O T L I N
  • 14. H O W M A N Y L A N G U A G E S H AV E A N D R O I D “ S U P P O R T ” ?
  • 15. • Scala • Kotlin • Groovy • Clojure • Go • Ceylon • XTend • JS • C++ • C# • PHP • Python • Ruby • Swift • QT • Perl • Pascal • Smalltalk
  • 16. A N Y L A N G U A G E …
  • 17. T H AT ’ S W H Y
  • 18. • JS • C++ • C# • PHP • Scala • Kotlin • Groovy • Go • Ceylon • XTend
  • 19. H O W ?
  • 20. • Small TODO app • Uploaded soon to github • Big post coming to nhpatt.com
  • 21. F I G H T ! by wiredforlego
  • 22. X T E N D by Mike
  • 23. X T E N D - W H AT ? • xtend & xtendroid • 2011!
  • 24. X T E N D - H O W ? • Eclipse IDE + SDK, Android Studio incoming? • About 40 minutes
  • 25. X T E N D - C O D E @AndroidActivity(R.layout.activity_main) class MainActivity { @OnCreate def init(Bundle savedInstanceState) { } }
  • 26. X T E N D - C O D E myButton.onClickListener = [ toast("My message"); ]
  • 27. X T E N D - C O D E val toUpperCaseFunction = [String s|s.toUpperCase]
  • 28. X T E N D - T H I N G S • Extension methods • Lambda expressions • Implicits • Operator overloading • Compiles to Java Code
  • 29. X T E N D - O P I N I O N • Perfect for consulting companies • Everything does too much • Java+
  • 30. G R O O V Y by Bill Toenjes
  • 31. G R O O V Y - W H AT ? • dynamic (2003) & static (2012!)
  • 32. G R O O V Y - H O W ? • Android Studio, Groovy Gradle Plugin • In groovy folder • About 30 minutes • SwissKnife
  • 33. G R O O V Y - C O D E def message = findViewById(R.id.message) as TextView
 message.text = messageText;
  • 34. G R O O V Y - C O D E button.onClickListener = {startActivity(intent)} @OnClick
  • 35. G R O O V Y - T H I N G S • Dynamic code & static code (@CompileStatic) • Traits • Better apis • Great gradle integration (dagger support coming)
  • 36. G R O O V Y - S TAT I C
  • 37. G R O O V Y - R U N T I M E
  • 38. G R O O V Y - O P I N I O N • Java++ • Dynamic code? • I like groovy but…
  • 39. C E Y L O N by Mike
  • 40. C E Y L O N - W H AT ? • Ceylon • Gavin King • 2011
  • 41. C E Y L O N - H O W ? • Eclipse IDE + Ceylon Plugin + PAIN • About 6 hours (eclipse hell + ceylon hell)
  • 42. A N D R O I D D O C U M E N TAT I O N
  • 43. A N D R O I D D O C U M E N TAT I O N
  • 44. C E Y L O N - C O D E shared actual void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.Ilayout.activity_main); assert (is TextView textView = findViewById(R.Iid.action_settings)); }
  • 45. C E Y L O N - T H I N G S • Type system • Mixins • String? • Packages and modules inside Ceylon
  • 46. C E Y L O N - O P I N I O N • Not ready. Future? • Doubt so.
  • 47. S C A L A by Mike
  • 48. S C A L A - W H AT ? • Scala • 2003
  • 49. S C A L A - H O W ? • Gradle plugin? • Post 47 degrees: Idea + plugins + SBT + activator… • About 1 hour
  • 50. T R O L L I N G S C A L A • findView without casts -> a trait • scala one liners -> hard to read by others but nice in collections • scala -> 2.8M with proguard -> heaviest environment • NPE -> with optionals, great solution IMHO • implicit context -> magic everywhere • traits -> quite common (kotlin, ceylon, ‘groovy’…) • no getters/setters -> quite common • pattern matching -> it’s nice but pure functional style • case classes -> a glorified switch/if
  • 51. S C A L A - T H I N G S • Types • Multiple programming styles • Optional
  • 52. S C A L A - O P I N I O N • I love scala, way better than Java, but… • Paradigm swift • Programmers (25 in TIOBE)
  • 53. S C A L A - S C A L O I D new SVerticalLayout { STextView("Sign in").textSize(24.5 sp).<<.marginBottom(25 dip).>> STextView("ID") SEditText() STextView("Password") SEditText() inputType TEXT_PASSWORD SButton("Sign in") this += new SLinearLayout { SButton("Help") SButton("Sign up") }.wrap }.padding(20 dip)
  • 54. S C A L A - M A C R O I D // the layout goes here setContentView { getUi { l[LinearLayout]( w[Button], w[TextView] ) } }
  • 55. G O by Nico Kaiser
  • 56. G O - W H AT ? • Go • 2009
  • 57. G O - W H AT ?
  • 58. “ W h o s e b e t t i n g t h i s y e a r s I / O w i l l a n n o u n c e t h e re p l a c e m e n t o f t h e A n d ro i d A P I w i t h t h e G o A P I ? “
  • 59. “ I l l o g i c a l , i r re s p o n s i b l e , i n s a n e p e o p l e a re b e t t i n g t h i s . ” “ G o , f o r C p e o p l e w h o h a t e C + + b u t a re t o o a f r a i d o f re a l I D E s f o r J a v a . ” J a k e W h a r t o n
  • 60. G O - H O W ? • Docker image (docker -> boot2docker -> missing steps -> worst hello world ever!) • About 2 hours (image is 4GB! + docker errors + no documentation)
  • 61. G O - C O D E • 2 ways: • Shared Library (JNI…) • All go
  • 62. G O - C O D E • var State • func Run • type Callbacks (Start, Stop, Draw) • Stubs
  • 63. G O - O P I N I O N • API for OpenGL/business logic • Not ready for “classic” app. • I’m worried about iOS support
  • 64. K O T L I N by Mike
  • 65. K O T L I N - W H AT ? • Kotlin • 2011
  • 66. K O T L I N - H O W ? • Android Studio plugin • About 10 minutes
  • 67. K O T L I N - T H I N G S • Traits • Interoperability with Java! • Extension Methods • Null?
  • 68. T R O L L I N G K O T L I N • class Leiva : Untrollable
  • 69. K O T L I N - O P I N I O N • I love Kotlin. • Really easy learning curve. • Few programmers doing Kotlin :(
  • 71. J AVA 8 • JDK7: <>, multi-catch, strings in switches, try with resources… • And java NIO/invokedynamic?
  • 72. J AVA 8 • And Java 8? (Lambdas/default methods/new date API…)
  • 73. • Jack & Jill?
  • 74. R E T R O L A M B D A asdasdasdby Marcos Bessa
  • 75. R E T R O L A M B D A - W H AT ? • Lambdas • Default Methods • Static Methods on interfaces
  • 76. R E T R O L A M B D A - H O W ? • Gradle Plugin • About 30 minutes
  • 77. R E T R O L A M B D A - C O D E (View v) -> Toast.makeText(this, “Hi!”, LENGTH_SHORT).
  • 78. R E T R O L A M B D A - O P I N I O N • An incomplete hack. • Nice if you don’t have any other option.
  • 79. A N D T H E T R O P H I E S G O T O …
  • 80. G O F O R B E I N G T H E M O S T H Y P E D by David Luders
  • 81. C E Y L O N F O R N O T B E I N G T H E R E by David Luders
  • 82. S C A L A C O N S O L AT I O N P R I Z E by David Luders
  • 83. K O T L I N by David Luders
  • 84. F I N A L W O R D S by jmiguel rodriguez
  • 85. N O T A N E W Q U E S T I O N
  • 86. T H AT M E A N S S O M E T H I N G
  • 87. N O T O N LY S Y N TA C T I C S U G A R asdasdasdby Steve Maw
  • 88. D A R T A N Y O N E ? by Sasha Nilov
  • 89. N E X T asdasdasdby Pascal
  • 90. E N D * * ¿ A L G U I E N Q U I E R E Q U E L E M O N T E U N E N T O R N O ? asdasdasdby Gord McKenna
  • 91. A N Y Q U E S T I O N S ?
  • 92. T H A N K S ! - > K C Y. M E / 2 2 N D 2 by Ale Art
  • 93. O K … K O T L I N V S S C A L A , F I G H T !
  • 94. O K … K O T L I N V S S C A L A , F I G H T !
  • 95. O K … K O T L I N V S S C A L A , F I G H T !
  • 96. O K … K O T L I N V S S C A L A , F I G H T !
  • 97. O K … K O T L I N V S S C A L A , F I G H T ! • Kotlin ppl are nice: comparison to scala -> if u are already using Scala or need sth on that list… • A good, external, comparison
  • 98. O K … K O T L I N V S S C A L A , F I G H T ! • The main design goals behind “Kotlin” are: • To create a Java-compatible language, • That compiles at least as fast as Java, • Make it safer than Java, i.e. statically check for common pitfalls such as null pointer dereference, • Make it more concise than Java by supporting variable type inference, higher-order functions (closures), extension functions, mixins and first- class delegation, etc; • And, keeping the useful level of expressiveness (see above), make it way simpler than the most mature competitor – Scala.
  • 99. N E W A N D R O I D L A N G U A G E S J A V I E R G A M A R R A : : @ N H PA T T