SlideShare uma empresa Scribd logo
1 de 60
Fantom
Fantom is  boring ,[object Object],BY DESIGN creator of fantom (along with andy frank)
It’s about damn time We had a boring language
Java Let’s start with
Another language? Why do we need
Java was looking great in 1995
In 2011, still beautiful just a little old
Java Better? What would you change to make
Lets keep the compiler
THE LITTLE CHANGES
Remove semi-colens  ,[object Object],[object Object],int a = 0 int b = 2
String interpolation ,[object Object],[object Object],Sop(“Welcome to ‘“ + event + “’ by “ + host) Sop(“Welcome to ‘$event’  by $host “)
Type inference ,[object Object],event = “Jug Meeting”
Multiline strings ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],String query = “select * from users where” +  “ company=‘microsoft’ and ” +   “  userid in(select id from usersalary” +   “ where sal > 200000000)”
echo ,[object Object],echo(“hi”)
Everything’s an object ,[object Object],[object Object],[object Object],[object Object]
Non null-able fields ,[object Object],[object Object],[object Object]
Less noisy ‘list’ syntax  ,[object Object],[object Object],[object Object],[object Object],[object Object]
Less noisy ‘Map’ syntax  ,[object Object],[object Object],[object Object],Map<String, User> map = new HashMap<String, User>(); map.put(“steve”, new User()); map.put(“woz”, new User());
Accessor methods ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
default param values ,[object Object],[object Object],[object Object],[object Object],[object Object]
THE NOT-SO-LITTLE CHANGES
BETTER MODULARIZATION
Which jar? android-1.1.jar guava.jar com.google.utils.Activity jscomp.jar tales.jar
Which pod? tales.pod email.pod tales::Activity web.pod sys.pod
What are we giving up? ,[object Object],[object Object],[object Object],[object Object]
easy reflection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Readable serialization ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
STATIC AND DYNAMIC TYPING
Always compile Sometimes compile, Sometimes Don’t Never compile
Static and dynamic ,[object Object],[object Object],[object Object],[object Object]
MIXINS
interface with implementation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Pass around methods ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],ACTORS
BETTER APIS
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],DATE AND IO
BORING?
TALES
What’s a framework?
Current state of Tales
[object Object],[object Object],[object Object],[object Object],[object Object],Tales is Boring ,[object Object],[object Object],[object Object],[object Object],[object Object]
Embrace HTML
What we will not have ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What we will Definitely not have  ,[object Object],[object Object],[object Object]
What we will not even have ,[object Object],[object Object],[object Object]
What we will have ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What we will have(2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
EMBRACE JAVASCRIPT
What we will not have ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Encapsulate & compile ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Simpler than DWR Ajax ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Embrace Fantom
FIX AND GO
Dependency injection & AOP ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Embrace HTTP
REST
Stateful and Scalable ,[object Object],[object Object],[object Object],[object Object],[object Object]
Embrace SQL
Part ORM Part Data-mapping ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

Doctrine MongoDB ODM (PDXPHP)
Doctrine MongoDB ODM (PDXPHP)Doctrine MongoDB ODM (PDXPHP)
Doctrine MongoDB ODM (PDXPHP)Kris Wallsmith
 
PHP 7 – What changed internally? (Forum PHP 2015)
PHP 7 – What changed internally? (Forum PHP 2015)PHP 7 – What changed internally? (Forum PHP 2015)
PHP 7 – What changed internally? (Forum PHP 2015)Nikita Popov
 
(Parameterized) Roles
(Parameterized) Roles(Parameterized) Roles
(Parameterized) Rolessartak
 
The promise of asynchronous php
The promise of asynchronous phpThe promise of asynchronous php
The promise of asynchronous phpWim Godden
 
Evolving Software with Moose
Evolving Software with MooseEvolving Software with Moose
Evolving Software with MooseDave Cross
 
Moose - YAPC::NA 2012
Moose - YAPC::NA 2012Moose - YAPC::NA 2012
Moose - YAPC::NA 2012xSawyer
 
Perl: Hate it for the Right Reasons
Perl: Hate it for the Right ReasonsPerl: Hate it for the Right Reasons
Perl: Hate it for the Right ReasonsMatt Follett
 
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webAnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webclkao
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?osfameron
 
WordPress Cuztom Helper
WordPress Cuztom HelperWordPress Cuztom Helper
WordPress Cuztom Helperslicejack
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I thinkWim Godden
 
Advanced symfony Techniques
Advanced symfony TechniquesAdvanced symfony Techniques
Advanced symfony TechniquesKris Wallsmith
 
Presentation on php string function part-1
Presentation on php string function part-1Presentation on php string function part-1
Presentation on php string function part-1Mysoftheaven (BD) Ltd.
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I thinkWim Godden
 

Mais procurados (20)

Doctrine MongoDB ODM (PDXPHP)
Doctrine MongoDB ODM (PDXPHP)Doctrine MongoDB ODM (PDXPHP)
Doctrine MongoDB ODM (PDXPHP)
 
PHP 7 – What changed internally? (Forum PHP 2015)
PHP 7 – What changed internally? (Forum PHP 2015)PHP 7 – What changed internally? (Forum PHP 2015)
PHP 7 – What changed internally? (Forum PHP 2015)
 
(Parameterized) Roles
(Parameterized) Roles(Parameterized) Roles
(Parameterized) Roles
 
The promise of asynchronous php
The promise of asynchronous phpThe promise of asynchronous php
The promise of asynchronous php
 
Evolving Software with Moose
Evolving Software with MooseEvolving Software with Moose
Evolving Software with Moose
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Moose - YAPC::NA 2012
Moose - YAPC::NA 2012Moose - YAPC::NA 2012
Moose - YAPC::NA 2012
 
Perl: Hate it for the Right Reasons
Perl: Hate it for the Right ReasonsPerl: Hate it for the Right Reasons
Perl: Hate it for the Right Reasons
 
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webAnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time web
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?
 
WordPress Cuztom Helper
WordPress Cuztom HelperWordPress Cuztom Helper
WordPress Cuztom Helper
 
Perl5i
Perl5iPerl5i
Perl5i
 
Ant
Ant Ant
Ant
 
Having Fun Programming!
Having Fun Programming!Having Fun Programming!
Having Fun Programming!
 
An introduction to Ruby
An introduction to RubyAn introduction to Ruby
An introduction to Ruby
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I think
 
Advanced symfony Techniques
Advanced symfony TechniquesAdvanced symfony Techniques
Advanced symfony Techniques
 
Presentation on php string function part-1
Presentation on php string function part-1Presentation on php string function part-1
Presentation on php string function part-1
 
Current state-of-php
Current state-of-phpCurrent state-of-php
Current state-of-php
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I think
 

Semelhante a Fantom and Tales

Scala 3camp 2011
Scala   3camp 2011Scala   3camp 2011
Scala 3camp 2011Scalac
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Guillaume Laforge
 
Introduction To Groovy 2005
Introduction To Groovy 2005Introduction To Groovy 2005
Introduction To Groovy 2005Tugdual Grall
 
Zend framework 05 - ajax, json and j query
Zend framework 05 - ajax, json and j queryZend framework 05 - ajax, json and j query
Zend framework 05 - ajax, json and j queryTricode (part of Dept)
 
Programming with Java: the Basics
Programming with Java: the BasicsProgramming with Java: the Basics
Programming with Java: the BasicsJussi Pohjolainen
 
2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Wsloffenauer
 
Test du futur avec Spock
Test du futur avec SpockTest du futur avec Spock
Test du futur avec SpockCARA_Lyon
 
Gpars concepts explained
Gpars concepts explainedGpars concepts explained
Gpars concepts explainedVaclav Pech
 
Embedded Typesafe Domain Specific Languages for Java
Embedded Typesafe Domain Specific Languages for JavaEmbedded Typesafe Domain Specific Languages for Java
Embedded Typesafe Domain Specific Languages for JavaJevgeni Kabanov
 
Using DAOs without implementing them
Using DAOs without implementing themUsing DAOs without implementing them
Using DAOs without implementing thembenfante
 
Micro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicateMicro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicateKiev ALT.NET
 
XML-Free Programming
XML-Free ProgrammingXML-Free Programming
XML-Free ProgrammingStephen Chin
 

Semelhante a Fantom and Tales (20)

Scala 3camp 2011
Scala   3camp 2011Scala   3camp 2011
Scala 3camp 2011
 
C to perl binding
C to perl bindingC to perl binding
C to perl binding
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008
 
Scala 2 + 2 > 4
Scala 2 + 2 > 4Scala 2 + 2 > 4
Scala 2 + 2 > 4
 
Introduction To Groovy 2005
Introduction To Groovy 2005Introduction To Groovy 2005
Introduction To Groovy 2005
 
Zend framework 05 - ajax, json and j query
Zend framework 05 - ajax, json and j queryZend framework 05 - ajax, json and j query
Zend framework 05 - ajax, json and j query
 
JavaScript Needn't Hurt!
JavaScript Needn't Hurt!JavaScript Needn't Hurt!
JavaScript Needn't Hurt!
 
Programming with Java: the Basics
Programming with Java: the BasicsProgramming with Java: the Basics
Programming with Java: the Basics
 
2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws2007 09 10 Fzi Training Groovy Grails V Ws
2007 09 10 Fzi Training Groovy Grails V Ws
 
Scala introduction
Scala introductionScala introduction
Scala introduction
 
Groovy
GroovyGroovy
Groovy
 
Test du futur avec Spock
Test du futur avec SpockTest du futur avec Spock
Test du futur avec Spock
 
Coding Ajax
Coding AjaxCoding Ajax
Coding Ajax
 
Coding Ajax
Coding AjaxCoding Ajax
Coding Ajax
 
Gpars concepts explained
Gpars concepts explainedGpars concepts explained
Gpars concepts explained
 
Embedded Typesafe Domain Specific Languages for Java
Embedded Typesafe Domain Specific Languages for JavaEmbedded Typesafe Domain Specific Languages for Java
Embedded Typesafe Domain Specific Languages for Java
 
Using DAOs without implementing them
Using DAOs without implementing themUsing DAOs without implementing them
Using DAOs without implementing them
 
Micro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicateMicro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicate
 
XML-Free Programming
XML-Free ProgrammingXML-Free Programming
XML-Free Programming
 
Dartprogramming
DartprogrammingDartprogramming
Dartprogramming
 

Fantom and Tales