ThinkBeyondFrameworks,
theRealGemsareinthe
Languages
Naresha K
Chief Technologist, Channel Bridge Software Labs
naresha.k@gmail.com
@naresha_k
1
2
DISCLAIMER
3
The contents of this presentation may
hurt your feelings! Proceed with
caution
4
5
6
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
BusinessGoals
8
1
Time To Market
2
Economy
9
10
Layer 4
Layer 3
Layer 2
Layer 1
Think beyond frameworks, The real gems are in the languages
Whatittakestosucceed?
12
Architecture
Framework
Domain
Practices
Libraries
Language
13
Whyshould
wecareforthe
language?
ProgrammingConcepts
Objects
Functions
Higher Order Functions
Inheritance
Encapsulation
Polymorphism
Statically Typed
Dynamic Typing
Immutability
Composition
Parallel processing
Lazy Evaluation
15
Frameworks
reflect the opinion
of the language
they are built on
16
Lesser the
opinionated the
language => more
decisions to be made
by it’s users
Groovy&GrailsEvolution
TIMELINES
17
Initial
Dynamic
Groovy 2.0
Static Typing
Groovy 1.6
AST
Transformation
18
Language Evolution
Influences Framework
Evolution
19
20
Groovy
&
Grails
21
https://twitter.com/venkat_s/status/815686401870200833
SpecifyingTypes
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')
// vs
Person me = new Person(name: 'Naresha')
SpecifyingTypes
23
class Person {
String name
Integer age
}
SpecifyingTypes
24
class MyController {
def myService
// vs
AnotherService anotherService
}
Hierarchies->Capabilities
25
1 Inheritance
2 Composition (Traits)
LeveragingMetaProgramming
26
class MyService {
@Transactional(propagation = Propagation.REQUIRES_NEW)
def m1(){}
def m2() {
m1()
// vs
myProxy.m1()
}
}
LeveragingMetaProgramming
27
sc.clazz.metaClass.getMyProxy = { ->
grailsApplication.mainContext.getBean(propertyName)
}
LeveragingDSLs
28
class MenuItem {
String menuCode
String group
String label
String controller
String action
}
LeveragingDSLs
29
menuItems = [
new MenuItem(
menuCode: 'customer_new',
group: ‘customer',
label: 'Add Customer',
controller: ‘customer',
action: 'create'
),
]
LeveragingDSLs
30
menuItems = [
menuItem {
menuCode 'customer_new'
group 'customer'
label: 'Add Customer'
controller: 'customer'
action: 'create'
}
]
LeveragingDSLs
31
menuItems = [
menuItem {
menuCode 'customer_new'
group 'customer'
label 'Add Customer'
controller 'customer'
action 'create'
}
]
LeveragingDSLs
32
class MenuItem {
String menuCode
// Other attributes
def menuItem(Closure config){}
menuCode(val) { menuCode = val}
}
33
Frameworks are
gateways to
productivity, not
barriers for
innovation
Think Beyond Frameworks,
Learn Languages
Happy Learning…
“

More Related Content

PDF
Northwest Python Day 2009
PDF
Venkat Subramaniam Blending Java With Dynamic Languages
PDF
Venkat Subramaniam Building DSLs In Groovy
PDF
Code, ci, infrastructure - the gophers way
PDF
GraalVM - OpenSlava 2019-10-18
PDF
GraalVM - JBCNConf 2019-05-28
PDF
GraalVM - MadridJUG 2019-10-22
DOC
Birendra_resume
Northwest Python Day 2009
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Building DSLs In Groovy
Code, ci, infrastructure - the gophers way
GraalVM - OpenSlava 2019-10-18
GraalVM - JBCNConf 2019-05-28
GraalVM - MadridJUG 2019-10-22
Birendra_resume

What's hot (18)

PDF
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
PDF
TDC2018FLN | Trilha Containers - Redes em containers
PDF
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
PDF
Go - A Key Language in Enterprise Application Development?
PPTX
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
PPTX
Creating a reasonable project boilerplate
PPTX
NodeJS vs Golang - A detailed comparison
PPTX
#JavaOne What's in an object?
PDF
Golang, Future of Programming Language.
PDF
CQRS - Eine Einführung - NOUG 2011
PDF
Docker Introduction
DOC
Birendra_resume
PDF
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
PDF
Imagination's the Limit: Microservices in Node.js
PDF
PDF
0581OS_FM_Final_NT
PPTX
Introduction to GoLang
PPTX
Rancher master class globalized edge workloads with k3s
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
TDC2018FLN | Trilha Containers - Redes em containers
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
Go - A Key Language in Enterprise Application Development?
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
Creating a reasonable project boilerplate
NodeJS vs Golang - A detailed comparison
#JavaOne What's in an object?
Golang, Future of Programming Language.
CQRS - Eine Einführung - NOUG 2011
Docker Introduction
Birendra_resume
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Imagination's the Limit: Microservices in Node.js
0581OS_FM_Final_NT
Introduction to GoLang
Rancher master class globalized edge workloads with k3s
Ad

Similar to Think beyond frameworks, The real gems are in the languages (20)

PPT
Use Cases of #Grails in #WebApplications
PPT
Groovy And Grails
PPTX
Texas.gov Presents: Battle of Programming Languages
PDF
Demystifying Programming Frameworks - A Step-by-Step Guide.pdf
PDF
Grails
PDF
Java Edge.2009.Grails.Web.Dev.Made.Easy
PDF
Curious Coders Java Web Frameworks Comparison
PPTX
Introduction to Grails 2013
PDF
Mastering Programming Frameworks - A Comprehensive Guide.pdf
PDF
Application Architectures in Grails
PDF
Bledar Gjocaj - Java open source
POT
intoduction to Grails Framework
PDF
GR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
PPTX
Technologies for startup
PDF
Typesafe stack - Scala, Akka and Play
PDF
Understanding the Software Development Frameworks.pdf
PPTX
Magic with groovy & grails
PPTX
Social harvesting - Webbots
PDF
Groovy and noteworthy
ODP
Groovy and Grails intro
Use Cases of #Grails in #WebApplications
Groovy And Grails
Texas.gov Presents: Battle of Programming Languages
Demystifying Programming Frameworks - A Step-by-Step Guide.pdf
Grails
Java Edge.2009.Grails.Web.Dev.Made.Easy
Curious Coders Java Web Frameworks Comparison
Introduction to Grails 2013
Mastering Programming Frameworks - A Comprehensive Guide.pdf
Application Architectures in Grails
Bledar Gjocaj - Java open source
intoduction to Grails Framework
GR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
Technologies for startup
Typesafe stack - Scala, Akka and Play
Understanding the Software Development Frameworks.pdf
Magic with groovy & grails
Social harvesting - Webbots
Groovy and noteworthy
Groovy and Grails intro
Ad

More from Naresha K (20)

PDF
The Groovy Way of Testing with Spock
PDF
Evolving with Java - How to Remain Effective
PDF
Take Control of your Integration Testing with TestContainers
PDF
Implementing Resilience with Micronaut
PDF
Take Control of your Integration Testing with TestContainers
PDF
Favouring Composition - The Groovy Way
PDF
Effective Java with Groovy - How Language Influences Adoption of Good Practices
PDF
What's in Groovy for Functional Programming
PDF
Effective Java with Groovy & Kotlin - How Languages Influence Adoption of Goo...
PDF
Effective Java with Groovy & Kotlin How Languages Influence Adoption of Good ...
PDF
Eclipse Collections, Java Streams & Vavr - What's in them for Functional Pro...
PDF
Implementing Cloud-Native Architectural Patterns with Micronaut
PDF
Groovy - Why and Where?
PDF
Leveraging Micronaut on AWS Lambda
PDF
Groovy Refactoring Patterns
PDF
Implementing Cloud-native Architectural Patterns with Micronaut
PDF
Effective Java with Groovy
PDF
Evolving with Java - How to remain Relevant and Effective
PDF
Effective Java with Groovy - How Language can Influence Good Practices
PDF
Beyond Lambdas & Streams - Functional Fluency in Java
The Groovy Way of Testing with Spock
Evolving with Java - How to Remain Effective
Take Control of your Integration Testing with TestContainers
Implementing Resilience with Micronaut
Take Control of your Integration Testing with TestContainers
Favouring Composition - The Groovy Way
Effective Java with Groovy - How Language Influences Adoption of Good Practices
What's in Groovy for Functional Programming
Effective Java with Groovy & Kotlin - How Languages Influence Adoption of Goo...
Effective Java with Groovy & Kotlin How Languages Influence Adoption of Good ...
Eclipse Collections, Java Streams & Vavr - What's in them for Functional Pro...
Implementing Cloud-Native Architectural Patterns with Micronaut
Groovy - Why and Where?
Leveraging Micronaut on AWS Lambda
Groovy Refactoring Patterns
Implementing Cloud-native Architectural Patterns with Micronaut
Effective Java with Groovy
Evolving with Java - How to remain Relevant and Effective
Effective Java with Groovy - How Language can Influence Good Practices
Beyond Lambdas & Streams - Functional Fluency in Java

Recently uploaded (20)

PPT
What is a Computer? Input Devices /output devices
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
Modernising the Digital Integration Hub
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PPT
Geologic Time for studying geology for geologist
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
WOOl fibre morphology and structure.pdf for textiles
PPTX
Tartificialntelligence_presentation.pptx
PDF
CloudStack 4.21: First Look Webinar slides
PPTX
The various Industrial Revolutions .pptx
PDF
1 - Historical Antecedents, Social Consideration.pdf
What is a Computer? Input Devices /output devices
O2C Customer Invoices to Receipt V15A.pptx
A novel scalable deep ensemble learning framework for big data classification...
sustainability-14-14877-v2.pddhzftheheeeee
Univ-Connecticut-ChatGPT-Presentaion.pdf
Modernising the Digital Integration Hub
A comparative study of natural language inference in Swahili using monolingua...
Taming the Chaos: How to Turn Unstructured Data into Decisions
Web Crawler for Trend Tracking Gen Z Insights.pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Geologic Time for studying geology for geologist
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Developing a website for English-speaking practice to English as a foreign la...
DP Operators-handbook-extract for the Mautical Institute
WOOl fibre morphology and structure.pdf for textiles
Tartificialntelligence_presentation.pptx
CloudStack 4.21: First Look Webinar slides
The various Industrial Revolutions .pptx
1 - Historical Antecedents, Social Consideration.pdf

Think beyond frameworks, The real gems are in the languages