34
Think Beyond Frameworks, the Real Gems are in the Languages Naresha K Chief Technologist, Channel Bridge Software Labs [email protected] @naresha_k 1

Think beyond frameworks, The real gems are in the languages

Embed Size (px)

Citation preview

Page 1: Think beyond frameworks, The real gems are in the languages

Think Beyond Frameworks, the Real Gems are in the

Languages

Naresha K Chief Technologist, Channel Bridge Software Labs

[email protected] @naresha_k

1

Page 2: Think beyond frameworks, The real gems are in the languages

2

Page 3: Think beyond frameworks, The real gems are in the languages

DISCLAIMER

3

The contents of this presentation may hurt your feelings! Proceed with

caution

Page 4: Think beyond frameworks, The real gems are in the languages

4

Page 5: Think beyond frameworks, The real gems are in the languages

5

Page 6: Think beyond frameworks, The real gems are in the languages

6

Page 7: Think beyond frameworks, The real gems are in the languages

Grails

4

Opensource, Forums, Slack

Community3

On-demand capabilities,

Reuse, Share

Plugin Ecosystem

2

Convention over configuration,

Groovy

Productivity1

JVM, Spring, Hibernate

Built on proven tech

Page 8: Think beyond frameworks, The real gems are in the languages

Business Goals

8

1

Time To Market

2

Economy

Page 9: Think beyond frameworks, The real gems are in the languages

9

Page 10: Think beyond frameworks, The real gems are in the languages

10

Layer 4

Layer 3

Layer 2

Layer 1

Page 11: Think beyond frameworks, The real gems are in the languages
Page 12: Think beyond frameworks, The real gems are in the languages

What it takes to succeed?

12

Architecture

Framework

Domain

Practices

Libraries

Language

Page 13: Think beyond frameworks, The real gems are in the languages

13

Why should we care for the language?

Page 14: Think beyond frameworks, The real gems are in the languages

Programming Concepts

Objects

Functions

Higher Order Functions

Inheritance

Encapsulation

Polymorphism

Statically Typed

Dynamic Typing

Immutability

Composition

Parallel processing

Lazy Evaluation

Page 15: Think beyond frameworks, The real gems are in the languages

15

Frameworks reflect the opinion

of the language they are built on

Page 16: Think beyond frameworks, The real gems are in the languages

16

Lesser the opinionated the

language => more decisions to be made

by it’s users

Page 17: Think beyond frameworks, The real gems are in the languages

Groovy & Grails EvolutionTIMELINES

17

Initial

DynamicGroovy 2.0

Static Typing

Groovy 1.6

AST Transformation

Page 18: Think beyond frameworks, The real gems are in the languages

18

Language Evolution Influences Framework

Evolution

Page 19: Think beyond frameworks, The real gems are in the languages

19

Page 20: Think beyond frameworks, The real gems are in the languages

20

Groovy & Grails

Page 21: Think beyond frameworks, The real gems are in the languages

21

https://twitter.com/venkat_s/status/815686401870200833

Page 22: Think beyond frameworks, The real gems are in the languages

Specifying Types

22

def  friend  =  new  Person(name:  'Raj')def  friend  =  new  Person(name:  'Raj')def  friend  =  new  Person(name:  'Raj')

def friend = new Person(name: ‘Ravi')// vsPerson me = new Person(name: 'Naresha')

Page 23: Think beyond frameworks, The real gems are in the languages

Specifying Types

23

class Person {String nameInteger age

}

Page 24: Think beyond frameworks, The real gems are in the languages

Specifying Types

24

class MyController {def myService// vsAnotherService anotherService

}

Page 25: Think beyond frameworks, The real gems are in the languages

Hierarchies -> Capabilities

25

1 Inheritance

2 Composition (Traits)

Page 26: Think beyond frameworks, The real gems are in the languages

Leveraging Meta Programming

26

class MyService { @Transactional(propagation = Propagation.REQUIRES_NEW)

def m1(){}

def m2() {m1()// vsmyProxy.m1()

}}

Page 27: Think beyond frameworks, The real gems are in the languages

Leveraging Meta Programming

27

sc.clazz.metaClass.getMyProxy = { -> grailsApplication.mainContext.getBean(propertyName) }

Page 28: Think beyond frameworks, The real gems are in the languages

Leveraging DSLs

28

class MenuItem {String menuCodeString groupString labelString controllerString action

}

Page 29: Think beyond frameworks, The real gems are in the languages

Leveraging DSLs

29

menuItems = [new MenuItem(

menuCode: 'customer_new', group: ‘customer',

label: 'Add Customer',controller: ‘customer',

action: 'create'),

]

Page 30: Think beyond frameworks, The real gems are in the languages

Leveraging DSLs

30

menuItems = [menuItem {

menuCode 'customer_new' group 'customer'label: 'Add Customer'controller: 'customer'action: 'create'

}]

Page 31: Think beyond frameworks, The real gems are in the languages

Leveraging DSLs

31

menuItems = [menuItem {

menuCode 'customer_new' group 'customer'label 'Add Customer'controller 'customer'action 'create'

}]

Page 32: Think beyond frameworks, The real gems are in the languages

Leveraging DSLs

32

class MenuItem {String menuCode// Other attributes

def menuItem(Closure config){}menuCode(val) { menuCode = val}

}

Page 33: Think beyond frameworks, The real gems are in the languages

33

Frameworks are gateways to

productivity, not barriers for innovation

Page 34: Think beyond frameworks, The real gems are in the languages

Think Beyond Frameworks, Learn Languages

Happy Learning…“