Workshops
We offer 3 one day long workshops on 13th of May. We will start at 10:30am and work untill 5:30 pm with an hour break for a lunch. You will need to bring your laptop.
Workshops are paid additionaly at 749PLN (185 EUR) + 23% VAT. The price includes lunch. In order to register please use a button next to the workshop and provide your details.
The workshops will be delivered at Hotel Wyspiański, Westerplatte 15 St., Kraków
Workshop: Get Back in Control of Your SQL
Mastered by Lukas Eder
SQL is a powerful and highly expressive language for
queries against relational databases. SQL is established, standardised and
hardly challenged by alternative querying languages. Nonetheless, in the
Java ecosystem, there had been few relevant steps forward since JDBC to
better integrate SQL into Java. All attention was given to
object-relational mapping and language abstractions on a higher level, such
as OQL, HQL, JPQL, CriteriaQuery. In the mean time, these abstractions have
become almost as complex as SQL itself, regardless of the headaches they're
giving to DBAs who can no longer patch the generated SQL.
jOOQ is a dual-licensed Open Source product filling this gap. It implements
SQL itself as an internal domain-specific language in Java, allowing for
the typesafe construction and execution of SQL statements of arbitrary
complexity. This includes nested selects, derived tables, joins,
semi-joins, anti-joins, self-joins, aliasing, as well as many
vendor-specific extensions such as stored procedures, arrays, user-defined
types, recursive SQL, grouping sets, pivot tables, window functions and
many other OLAP features. jOOQ also includes a source code generator
allowing you to compile queries in modern IDEs such as Eclipse very
efficiently.
jOOQ is a good choice in a Java application where SQL and the specific
relational database are important. It is an alternative when JPA /
Hibernate abstract too much, JDBC too little. It shows, how a modern
domain-specific language can greatly increase developer productivity,
internalising SQL into Java
In this workshop, we will delve into the history of Java and SQL. We'll
learn about great new features in recent SQL standards, and we'll apply
this knowledge on our own laptops, working with two of the best RDBMS in
the market: Oracle and PostgreSQL. We'll implement a small webserver with
Spring and jOOQ, leveraging the many features of jOOQ and SQL to get up and
running quickly. Whether you're using jOOQ or not, after this workshop,
you'll have a strong desire to leverage SQL to the max for your application.
Participants are expected to bring a laptop with Oracle XE 11g,
PostgreSQL 9.3, JDK 6+, Maven, and Eclipse (or your favourite IDE)
Lukas Eder
Workshop: Java 8 Workshop
Mastered by Raoul-Gabriel Urma
Java 8, released in March 2014, brings the largest update to the language since the introduction of generics in 2004. Why is Java 8 changing again? Because of two trends that could not be ignored:
1) The increasing need to exploit the power of multi-core processors in a programmer-friendly way
2) The increasing demand of processing collections of data with database-like operations (e.g. filter, map, grouping)
Neither of these trends is effectively supported by the traditional object-oriented imperative approach centred around mutating objects, and applying iterators. However, they are easily supported using ideas from functional programming, which Java 8 has taken inspiration from.
This new version of Java incorporate features popular in many other programming languages to respond to these two trends: the ability to represent a piece of behaviour in a concise form (called lambda expressions) and database-like operations on collections (called the new Streams API). In addition, it brings other popular ideas that will impact how you write code on a day to day: default methods (implementation code inside interfaces), the class Optional (an alternative to the null reference), the class CompletableFuture (composable asynchronous programming) and a new Date and Time API designed with immutability in mind.
Why take this course?
Java 8 encourages a different style of programming that:
- lets you cope for requirement changes (less engineering efforts!)
- lets you take advantages of multi-core architecture easily (faster code!)
- lets you process large collections with SQL-like operations (do more in less time!)
- lets you write more concise code (better readability & maintainability!)
In this intensive one-day workshop we teach you how to make use of Java 8 features to achieve all of the above. The course will contain lectures, quizzes, live coding examples and unit test exercises. The workshop is structured as follows and based on the upcoming book “Java 8 in Action: Lambdas, Streams and functional-style programming”: http://manning.com/urma/
1) Why you should care about Java 8?
2) Passing code with behavior parameterisation
- Coping with requirement changes
- Behaviour parameterisation
- Anonymous classes
- Real word examples: Comparator, Runnable & GUI events
3) Lambda expressions
- Syntax
- Where and how to use them
- Putting in practice: Execute around pattern
- Using functional interfaces
- Type checking, type inference & restrictions
- Method references
4) Processing data with streams
- Processing collections with database-like operations
- Streams vs Collections: laziness & internal iteration
- Filtering & slicing
- Finding & matching
- Mapping: map & flatMap
- Reducing
- Numeric streams: primitive specialisations & ranges
- Infinite streams
5) Collecting data with streams
- Collectors
- Reducing & summarizing
- Grouping
- Partitioning
6) Refactoring design patterns to lambda expressions
- Strategy
- Template method
- Observer
- Chain of responsibility
- Factory
7) Default methods
- Evolving APIs
- Default methods in a nutshell
- Application of default methods
- Multiple inheritance: rules
8) Optional
- Design better APIs
- Reducing null pointers exceptions
Raoul-Gabriel Urma
Workshop: Mastering Continuous Inspection with SonarQube
Mastered by Patroklos Papapetrou
This one-day course, by one of the authors of SonarQube In Action, is the ideal hands-on workshop to learn the core concepts of source code quality and how to eventually adopt continuous inspection in any software development lifecycle, using SonarQube. It is intended to teach developers, testers and software architects how to use this open-source tool to continuously track and improve the quality of their source code.Here’s a short outline of what we’re going to deal with during this workshop:
- Understanding the importance of Technical debt
- The 7 axes of quality
- Picking a metric to improve
- Strategies
- Implementing with Continuous Inspection & code reviews