This document discusses various concurrency concepts in Java including Java 6 locks and thread pools, Java 7 fork/join framework and parallel arrays. It also covers parallel collections, actors, communicating sequential processes, dataflow, agents, and software transactional memory. The document emphasizes dataflow concurrency as enabling deterministic programs without race conditions, live-locks or non-deterministic deadlocks through the use of dataflow variables and channels.
The document discusses implementing domain specific languages (DSLs) using Groovy. It defines DSLs as languages that clearly express the ideas of a particular domain. It outlines several advantages of Groovy for building DSLs, including its flexibility, Java interoperability, and features that support DSL development like introspection, syntactic sugar, and operator overloading. Examples are provided of internal DSLs implemented in Groovy for tasks like querying a database and defining recipes.
This document discusses using Groovy to create domain-specific languages (DSLs). It defines external and internal DSLs and explains the goals of DSLs. It outlines tools in Groovy for DSLs, including the Groovy shell, compiler customizers, and AST transformations. The document provides examples of DSLs built with Groovy like Gradle, Grails, and Spock and demonstrates how to share data between a Groovy script and application using bindings.
This document discusses using Groovy to build domain-specific languages (DSLs) for creating complex object graphs, as demonstrated through a case study of rewriting a Chicago budget book generation application. Groovy is well-suited for DSL development due to its dynamic and metaprogramming features. The document presents increasingly Groovy-centric approaches to building the budget book, culminating in a DSL implemented with a Groovy Builder that allows generating the book object model declaratively through closures in a natural and readable manner.
This document discusses how Groovy powers Gradle's domain-specific language (DSL). It outlines Groovy's features like optional syntax, closures, and Java integration. It then shows how Gradle uses Groovy to define its DSL, with examples like applying plugins and defining tasks. Finally, it mentions that AST transformations allow customizing Groovy's compilation for the Gradle DSL, and that Launcher.java loads Groovy scripts while TaskTransformer.java builds task method calls from the Groovy AST.
Spring one 2012 Groovy as a weapon of maas PaaSificationNenad Bogojevic
?
to share the same infrastructure for all our customers.
We therefore built a highly sophisticated model of physical and logical farms, partitioning the traffic and optimizing resources. We operate 700+ JEE nodes, split in 30+ logical clusters, deployed on less than 10 physical server pools. Today, this infrastructure is delivering a billion dynamic pages per month, for more than 5 million bookings, with a 10 times factor growth expected in the coming years.
Even though thousands of parameters are available to tailor our products to any one particular needs, the recent evolution of the IT Industry towards PAAS ecosystems modified customer expectations: they are now looking for the capability to extend our applications, interact with their own IT, influence our business logic or even graphical interface.
To support this vision, we started developing an extensibility framework, based on scripting technologies. Though being language agnostic, we quickly decided to invest on the Groovy language and rely on JSR 223 to embed it into our applications.
However, transforming a multi-tenant & community SAAS ecosystem into a flexible PAAS environment implies to take up multiple challenges, especially around sandboxing ? access & resource control ? or productivity and production constraints, such as hot-reloading or instantaneous fallback mechanism.
This presentation will therefore focus on how Groovy and its extensibility mechanisms allow us to progress on these topics, what are the limitations faced due to its dynamicity nature, and how we?re thrilled by the new features coming in next releases.
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...Guillaume Laforge
?
The document discusses Domain Specific Languages (DSLs) and their use in Groovy. It provides an introduction to DSLs, their goals, examples of technical and business DSLs, and pros and cons of using DSLs. The document also discusses various Groovy features that are useful for creating DSLs, such as optional typing, native syntax constructs, command chain expressions, and adding properties to numbers. Paul King and Guillaume Laforge are identified as presenters on DSLs in Groovy.
What are some practical uses for Domain Specific Languages (DSL)? And how do you go about designing DSLs, implementing them in Groovy, creating tests for your models and evolving the structure of the languages over time?
In this fast paced session, Peter Bell will examine a real world Groovy DSL, how it was designed and implemented, the testing strategies employed and the options for evolving the structure (grammar) of the DSL.
If you've built DSLs but want to go further, or if you've still not figured out how a DSL might help you to build better, more maintainable apps more quickly and easily, come along and learn more about creating practical, maintainable DSLs for your projects.
Just a thought . . . If you are interested in this talk you might also be interested in Core Gradle: Gradle, a Build System for Java Workshop and Graeme Rocher's Groovy and Grails Workshop
Building an Extensible, Resumable DSL on Top of Apache Groovyjgcloudbees
?
Presented at: https://apacheconeu2016.sched.org/event/8ULR
n 2014, a few Jenkins hackers set out to implement a new way of defining continuous delivery pipelines in Jenkins. Dissatisfied with chaining jobs together, configured in the web UI, the effort started with Apache Groovy as the foundation and grew from there. Today the result of that effort, named Jenkins Pipeline, supports a rich DSL with "steps" provided by a Jenkins plugins, built-in auto-generated documentation, and execution resumability which allow Pipelines to continue executing while the master is offline.
In this talk we'll take a peek behind the scenes of Jenkins Pipeline. Touring the various constraints we started with, whether imposed by Jenkins or Groovy, and discussing which features of Groovy were brought to bear during the implementation. If you're embedding, extending or are simply interested in the internals of Groovy this talk should have plenty of food for thought.
The document discusses implementing domain specific languages (DSLs) using Groovy. It defines DSLs as languages that clearly express the ideas of a particular domain. It outlines several advantages of Groovy for building DSLs, including its flexibility, Java interoperability, and features that support DSL development like introspection, syntactic sugar, and operator overloading. Examples are provided of internal DSLs implemented in Groovy for tasks like querying a database and defining recipes.
This document discusses using Groovy to create domain-specific languages (DSLs). It defines external and internal DSLs and explains the goals of DSLs. It outlines tools in Groovy for DSLs, including the Groovy shell, compiler customizers, and AST transformations. The document provides examples of DSLs built with Groovy like Gradle, Grails, and Spock and demonstrates how to share data between a Groovy script and application using bindings.
This document discusses using Groovy to build domain-specific languages (DSLs) for creating complex object graphs, as demonstrated through a case study of rewriting a Chicago budget book generation application. Groovy is well-suited for DSL development due to its dynamic and metaprogramming features. The document presents increasingly Groovy-centric approaches to building the budget book, culminating in a DSL implemented with a Groovy Builder that allows generating the book object model declaratively through closures in a natural and readable manner.
This document discusses how Groovy powers Gradle's domain-specific language (DSL). It outlines Groovy's features like optional syntax, closures, and Java integration. It then shows how Gradle uses Groovy to define its DSL, with examples like applying plugins and defining tasks. Finally, it mentions that AST transformations allow customizing Groovy's compilation for the Gradle DSL, and that Launcher.java loads Groovy scripts while TaskTransformer.java builds task method calls from the Groovy AST.
Spring one 2012 Groovy as a weapon of maas PaaSificationNenad Bogojevic
?
to share the same infrastructure for all our customers.
We therefore built a highly sophisticated model of physical and logical farms, partitioning the traffic and optimizing resources. We operate 700+ JEE nodes, split in 30+ logical clusters, deployed on less than 10 physical server pools. Today, this infrastructure is delivering a billion dynamic pages per month, for more than 5 million bookings, with a 10 times factor growth expected in the coming years.
Even though thousands of parameters are available to tailor our products to any one particular needs, the recent evolution of the IT Industry towards PAAS ecosystems modified customer expectations: they are now looking for the capability to extend our applications, interact with their own IT, influence our business logic or even graphical interface.
To support this vision, we started developing an extensibility framework, based on scripting technologies. Though being language agnostic, we quickly decided to invest on the Groovy language and rely on JSR 223 to embed it into our applications.
However, transforming a multi-tenant & community SAAS ecosystem into a flexible PAAS environment implies to take up multiple challenges, especially around sandboxing ? access & resource control ? or productivity and production constraints, such as hot-reloading or instantaneous fallback mechanism.
This presentation will therefore focus on how Groovy and its extensibility mechanisms allow us to progress on these topics, what are the limitations faced due to its dynamicity nature, and how we?re thrilled by the new features coming in next releases.
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...Guillaume Laforge
?
The document discusses Domain Specific Languages (DSLs) and their use in Groovy. It provides an introduction to DSLs, their goals, examples of technical and business DSLs, and pros and cons of using DSLs. The document also discusses various Groovy features that are useful for creating DSLs, such as optional typing, native syntax constructs, command chain expressions, and adding properties to numbers. Paul King and Guillaume Laforge are identified as presenters on DSLs in Groovy.
What are some practical uses for Domain Specific Languages (DSL)? And how do you go about designing DSLs, implementing them in Groovy, creating tests for your models and evolving the structure of the languages over time?
In this fast paced session, Peter Bell will examine a real world Groovy DSL, how it was designed and implemented, the testing strategies employed and the options for evolving the structure (grammar) of the DSL.
If you've built DSLs but want to go further, or if you've still not figured out how a DSL might help you to build better, more maintainable apps more quickly and easily, come along and learn more about creating practical, maintainable DSLs for your projects.
Just a thought . . . If you are interested in this talk you might also be interested in Core Gradle: Gradle, a Build System for Java Workshop and Graeme Rocher's Groovy and Grails Workshop
Building an Extensible, Resumable DSL on Top of Apache Groovyjgcloudbees
?
Presented at: https://apacheconeu2016.sched.org/event/8ULR
n 2014, a few Jenkins hackers set out to implement a new way of defining continuous delivery pipelines in Jenkins. Dissatisfied with chaining jobs together, configured in the web UI, the effort started with Apache Groovy as the foundation and grew from there. Today the result of that effort, named Jenkins Pipeline, supports a rich DSL with "steps" provided by a Jenkins plugins, built-in auto-generated documentation, and execution resumability which allow Pipelines to continue executing while the master is offline.
In this talk we'll take a peek behind the scenes of Jenkins Pipeline. Touring the various constraints we started with, whether imposed by Jenkins or Groovy, and discussing which features of Groovy were brought to bear during the implementation. If you're embedding, extending or are simply interested in the internals of Groovy this talk should have plenty of food for thought.
This document discusses new interactive ways for electronic books and demonstrates gesture controls for an iOS app called "Our Choice". It shows how to implement swiping left and right to change pages, pinching to zoom, and tapping. Code examples are provided for using UIScrollView, UIPinchGestureRecognizer, UIPanGestureRecognizer, UISwipeGestureRecognizer and UITapGestureRecognizer to enable these gestures. The document also introduces Reload Tech and its CEO Kevin Zhang.
Using cloud computing and virtualization technologies, continuous delivery focuses on automating the process of deploying code changes to production environments as quickly and frequently as possible while ensuring quality. Techniques like Chef automation, Amazon VPC, and Vagrant help configure and provision virtual servers that simulate production environments for testing purposes before deploying to actual production servers. A continuous delivery pipeline with stages like acceptance testing, staging, and production releases helps validate and release code changes.
DevOps is a software development approach that emphasizes collaboration between development and operations teams. It aims to shorten the systems development life cycle and improve quality by automating infrastructure and using lean principles and infrastructure as code. DevOps teams work to improve lead time, quality, and collaboration through practices like continuous integration, deployment, and monitoring.