SlideShare una empresa de Scribd logo
1 de 99
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado

Arduino - Cuarta sesión
Arduino - Cuarta sesiónArduino - Cuarta sesión
Arduino - Cuarta sesiónJavier Gamarra
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Javier 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 2Roberto 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 SpaceTenerife 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ónJavier Gamarra
 
5 meses de juegos ágiles
5 meses de juegos ágiles5 meses de juegos ágiles
5 meses de juegos ágilesJavier Gamarra
 
Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in androidJavier 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 2Tenerife Maker Space
 
Actividades de-lectoescritura-05
Actividades de-lectoescritura-05Actividades de-lectoescritura-05
Actividades de-lectoescritura-05EDITH LLERENA
 
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 1Tenerife Maker Space
 
Cuestionario, checklist, inspecccion, entrevista
Cuestionario, checklist, inspecccion, entrevistaCuestionario, checklist, inspecccion, entrevista
Cuestionario, checklist, inspecccion, entrevistaHildaMarroquin91
 
Cambiar una empresa con juegos ágiles
Cambiar una empresa con juegos ágilesCambiar una empresa con juegos ágiles
Cambiar una empresa con juegos ágilesJavier Gamarra
 
Tema2.componenteselectrónicos%28 alumnos%29
Tema2.componenteselectrónicos%28 alumnos%29Tema2.componenteselectrónicos%28 alumnos%29
Tema2.componenteselectrónicos%28 alumnos%29EDITH LLERENA
 

Destacado (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 a New Android Languages

High quality Front-End
High quality Front-EndHigh quality Front-End
High quality Front-EndDavid Simons
 
Testable JavaScript Strategies
Testable JavaScript StrategiesTestable JavaScript Strategies
Testable JavaScript StrategiesDiwa 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 ScalaScala Italy
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactorcklosowski
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactorcklosowski
 
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 2019Michał Kurzeja
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScripttdc-globalcode
 
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 CodeDavid Danzilio
 
Software Quality
Software QualitySoftware Quality
Software Qualityjakubkoci
 
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
 
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 ReedSeniorStoryteller
 
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
 
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 DesignJosh Black
 

Similar a 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
 

Último

Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 

Último (20)

Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 

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