JavaCamp #4 abstrakty
Scala the next Java? – Łukasz Kuczera (will speak in polish or english if the audience prefer)
Scala is new object-functional hybrid language that compiles to Java bytecode. In my speak I would like to share my insight into it. Show its strengths and weaknesses and start some discussion about other JVM languages and the future of Java platform overall as well. My experience with Scala stared June 2009 on COOLuary unconference. After getting some used to Scala I’ve lifted of the the quite comfortable sandbox offered by Java to explore other languages. I’ve took short peek at LISP, Haskel, Clojure, Groovy and Erlang. In my speak I will present what is the Scala language and how does it feel. How it is different from Java and what has been improved. Scala is designed to scale with user and to needs. It can be used as a small purpose scripting language, as general purpose language, as a host for embedded or external dsl’s and for business logic in enterprise scale applications, to implement fast paced first person shooter games and for many other purposes. Although language is mainly used on JVM it is designed to compile down to CLR as well. Its core is very small, most of constructs are user space libraries for example operators are methods defined on classes, it is possible to define users own control structures that feel like native language constructs this give space to grow language for our own needs without hassle. Built in actors library helps tackle down concurrency, XML is supported natively with Object-XML serialization so no more need to learn SAX, StAX, Jdom, JAXP, JAXB, Castor nor Jibix. And what is most important It interoperates both way with Java seamlessly. Short list of Scala features includes: Type Inference Uniform Access Principle Closures Higher Order Functions Pattern Matching Actors Generics Native XML support Abstract control structures Implicit conversions and parameters Advanced for expressions Annotations Combinator parsing Traits Duck typing Null „safety”
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Actors – Jonas Bonér
We believe that writing correct concurrent, fault-tolerant and scalable applications is too hard. Most of the time it’s because we are using the wrong tools and the wrong level of abstraction. Akka is here to change that. Akka is using the Actor Model together with Software Transactional Memory (STM) to raise the abstraction level and provide a better platform to build correct concurrent and scalable applications. For fault-tolerance it adopts the “Let it crash” model which have been used with great success in the Telecom industry to build applications that self-heals, systems that never stop. Akka’s Remote Actors, backed by a scalable non-blocking IO implementation, provides the abstraction for transparent distribution and the basis for truly scalable and fault-tolerant applications. In this talk you will learn what Akka is, how it can be used to solve hard problems and the ideas behind its design and implementation. Akka is available at http://akkasource.org/
Jonas Bonér is a programmer, teacher, mentor, speaker and author who spends most of his time consulting, hacking on open source as well as lecturing and speaking at developer conferences orld-wide. He has worked at Terracotta, the JRockit JVM at BEA and is an active contributor to the Open Source community; most notably created the Akka Project, AspectWerkz Aspect-Oriented Programming (AOP) framework, committer to the Terracotta JVM clustering technology and been part of the Eclipse AspectJ team. Blog: http://jonasboner.com
Is OSGi ready for enterprise use? – Bartosz Kowalewski (will speak in polish)
OSGi, being a dynamic module system for Java, definitely provides lots of benefits to its adopters. It not only helps to properly componentize applications, but also promotes reusability and service based interactions inside a single JVM. With maturation of Equinox, Felix and Spring DM server OSGi is getting more and more popular. Unfortunately, adoption of OSGi does not come without a cost. The cost might actually outweigh the short-term benefits.
One of main OSGi promises is better dependency management and class space consistency. While conceptually OSGi handles all the needed cases, the complexity of configuration required to properly handle class loading may be extremely high. The ‘uses’ directive and thread context classloaders play a major role here.
In this session, I will also cover some of widely used technologies that are built upon OSGi. A closer look will be taken at Spring DM Extender and the limitations it introduces to other libraries, including Apache Camel. Amongst other topics, Java’s Service Provider Interface (SPI) mechanism and approaches to testing OSGi applications will be mentioned. OSGi Enterprise specification and Apache Aries will also be covered.
Bottomline: Remember! OSGi is a useful piece of technology, but you will not get away with not knowing OSGi internals & details. No tooling will hide all the problems and you will still need to learn all the tricks and tips. … and the learning curve is definitely not flat.
Lift – simply functional web framework – Łukasz Kuczera
Lift is an expressive and elegant framework for writing web applications. Lift stresses the importance of security, maintainability, scalability and performance, while allowing for high levels of developer productivity. Lift grows on concepts from other frameworks like:
- fast flash to bang – based on Rails quick project starts
- Django’s not only ORM included – fast ORM using ActiveRecord pattern plus view generation, entities know how to “render themselfs” if you prefer Javaish way theres JPA integration layer
- Wickets designer-friendly templates – all templates in Lift are plain XHTML
- Best Comet support around – write comet app in dozen lines of code and embrace your favorite actor library – Scala, Lift or Akka
Lift is packaged into war just pick application server of your choice and deploy. Lift together with Scala as server side language creates developer friendly combination and is production ready.
In session I will introduce Lift on example application so you will how Lift works in practice.