Abstract
Stadig flere applikasjoner finner veien til mobiltelefonen. Kundene forventer lik (eller bedre) sikkerhet på applikasjonen når den er på en mobiltelefon som når den er på en vanlig PC. Java ME er kjent for ha en svært strikt sikkerhetspolitikk med høy grad av ”sandboxing”, men er dette nok for å lage en sikker applikasjon? Hva er det egentlig som skal til for å lage en sikker applikasjon, og har Java ME det som trengs? Hva med "write once, run everywhere”?
Foredraget vil gi en oversikt over hvordan man lager sikre applikasjoner i Java ME med innslag av nyttige erfaringer og fallgruver.
Abstract:
In the last several years, I've taken a different approach to building software applications. Implementing various application concerns(1) generically(2) has enabled me to reuse the implementations across projects.
- (1) concerns: such as forms construction, validation, ui navigation, search, authorization
- (2) generically: in such a fashion that the implementation is decoupled from, or agnostic from the application's domain
Specifically, I have constructed a framework that enables a very high degree of reuse, whereby I reduce application development to little more than defining the domain. Where implementations of the persistence, user interface, and other concerns can be reused across differing applications. In this talk, I will be sharing with you my experiences with this approach, and the results it has yielded. Live demonstrations of the various reusable features will be given.
Abstract:
Rich Applications has achieved a new degree of sophistication
with requirements to add multimedia and animation. With the
introduction of the new JavaFX SDK and Java SE 6
update N, it is possible to incorporate the newer elements
of a very rich client application into new and existing
Java applications.
Attend this session to get a very brief overview of the
JavaFX programming language and the animation and media
APIs that make it possible to create some sexy looking
GUIs which was hitherto difficult in Java.
After attending this session, attendees will walk away
with a good understanding of JavaFX and Java SE 6 Update
N and how to incorporate the features, such as audio, video
and animation into their applications. They will also get
an idea of the deployment options i.e. applets or applications.
Abstract
The Jazz technology platform and IBM Rational Team Concert are developed by
a team spread over eight sites and multiple time zones. The development is
done using Agile practices based on the "Eclipse Way." For over a year our
team has been using IBM Rational Team Concert to develop the product
itself. This talk sheds light into how this is done and discusses best
practices for using scaling up agility in a globally distributed team.
Thomas J. Watson (sjef for IBM ) skal ha sagt: "I think there is a world market for maybe five computers”. I tiår har folk ledd av dette utsagnet. Amazon lanserte i 2006 en løsning for ”Elastic Compute Cloud (EC2)”, dvs. virtuelle maskiner til leie. Fortsetter utviklingen med stadig mer bruk av EC2 er det ikke sikkert at Watson tok så feil…
Many developers find the user experience uninteresting. "It's easy. Just skip the interface design phase and make everything beige. You can't go wrong with beige", some might think. This presentation will look at the theory behind great user experience. We will cover and kill some myths, talk about conventions, intuition and user intentions, as we go through the "classification process model" and give an overview of the laws of interaction design.
One of the core principles of domain driven design is that it should
be focused on the domain and it’s logic, rather than the technology
used to implement the system. However, many projects using the domain
driven approach get tangled up in the technicalities of software
development which increases complexity, reduces velocity and hurts
both maintainability and reusability.
In this talk I will demonstrate how to employ software engineering
principles like "Don’t Repeat Yourself" (DRY), the single
responsibility principle, separation of concerns and many more to keep
attention on the model and at the same time cater for the concerns
that clutter the designs of many domain driven solutions.
After attending this talk, you should have a better understanding of
how to separate your infrastructural con- cerns from your domain
logic, build adaptable domain models that fit into many usage
scenarios and keep those models maintainable throughout the entire
project life-cycle.
Abstract:
Modularity, versioning and dynamics make OSGi an ideal candidate for deploying and running Java applications, whether small or large. However, nothing comes for free and, like in any other environment, there are "do"s and "don't"s.
In this session, we'll start by looking at OSGi (plus HK2 and JAM while we're at it) and then focus on some of the challenges that one might encounter when developing an enterprise application (containing web and data tier) in OSGi and how they can be addressed, using the lessons learned in Spring Dynamic Modules project and SpringSource Application Platform.
Abstract
Did you ever want to be the Big Brother of the Java Virtual Machine? Being able to do non intrusive monitoring of method calls without access to the source code, performing this in a production environment without a noticeable performance hit?
Do you want to know who is doing what to whom, that is, who invokes what method in context of which principal? Making certain that memory consumption is dynamically adjusted to avoid out of memory situations? Would you also like to use it in your legacy applications running pre Java 5 as well as utilize the new Java agent interface of the newer JVMs?
You know you have to collect vast amount of data and process it effectively and in real
time. Finally you figure out that the amount of data exceeds the capabilities of a
traditional data model and you decide that the only solution is a dimensional data model,
using MDX for multi dimensional analysis.
There are numerous tools available for profiling and measuring your Java programs.
However these tools are either: a) aimed at profiling or measuring your code in a
development environment; b) expensive; c) not open source; d) requires a Ph.D. in
debugging and profiling e) any combination of the above :-)
Usemon (usemon.org) attempts to alleviate this by providing an open source tool which
is easy to use, collects data from environments based upon Java 1.4 through 6, has a
flexible dimensional data model stored in a SQL database and attempts to be
non-intrusive.
Usemon hooks into the Java virtual machine through a modified class loader on older
JVMs or via the Java Agent Interface from version 5 and up. It automatically monitors
Java EE components (EJBs, Servlets, MDBs, Queues, SQL Statements, etc), but can be
configured to inspect any class in your JVM. Data is multicasted from agents to one or
more collectors and stored in the DBMS of your choice. Usemon comes with a complete
configuration for MySQL.
The overhead of running Usemon is negligible and thus you may collect run-time
statistics around the clock all year, which is rather fascinating, given that you have
enough disk space.
Usemon was developed for large Java EE environments at Telenor, which is one of the
worlds largest telco to fulfill these requirements. You may utilize it in any environment in
which you have control over the Java Virtual Machine start up parameters. For example
Java EE applications, Spring based Web applications or simply your own home grown
web application packaged in a .war file.
Abstract:
Byte code manipulation has become increasingly popular over the last
years. It is used by JPA implementations, application servers, AOP
libraries, web frameworks, monitoring systems, profilers, clustering
solutions, scripting languages, workflow engines, and much more. In
fact, most of today's applications will most probably rely on byte
code manipulation, often even without realizing.
Application developers however seem to be overly careful and often
frown upon byte code manipulation as an arcade art that is risky and
difficult to understand. This presentation will show you that it's
easier than you think. We'll go over concise examples that illustrate
the concepts. Distinct patterns, coming from different domains, will
give you ideas about adopting byte code manipulation for your own
products. You'll learn arguments to reassure skeptics and see how the
manipulation can plugged into your tool chain. We'll finish off with
tips and tricks to write maintainable code with the ASM library.
After this session you'll see byte code manipulation as another tool
in your arsenal and you'll have a good picture of how to start using
it yourself.
Get ready for a challenge as Robert Martin dives deep into the topic of clean Java code by examining what makes a good function.
I HTTP-protokollen er det i utgangpunktet alltid klienten som initierer forespørsler. Men hva gjør du hvis en hendelse oppstår på serveren og du trenger å informere en eller mange klienter om dette så fort som mulig?
This session will compare a range of popular IoC containers. The containers that will be compared are: Spring, Guice, Tapestry 5 IOC, HK2
Many view Apache Maven in the context of other build tools such as Apache Ant and Apache Ivy, yet Maven’s functionalities extend far beyond the efficient, enterprise-class project build. When coupled with supporting tools like Nexus and m2eclipse, Maven starts to accelerate development by reducing the level of work required to support build management and cross-department collaboration.
Both Intel and Microsoft have recently said that we, as developers, need
to start delivering more concurrency in our applications. The biggest
obstacle to delivering more concurrency is the need to share data
between threads.
Some of the promises of Topic Maps, is the possibility of being able to easily structure and rearrange the model, as well as placing semantics where they are needed. Implementing such a dynamic and rich model, is not easy with an Object Oriented language like Java.
The proposition of the authors, is that one can assist composing a song from audio fragments with the help of simple heuristics. Given that the audio is tagged with human recognisable information such as verse, refrain, lyrics, speed, starting and ending points.
Storing such diverse information in a Topic Map is fairly trivial, but creating a dynamic Java model which can represent this is not, and the talk will discuss this topic further.
The audience will be introduced to simple concepts of Topic Maps and music composition theory.
The talk will finally present Vaudeville, the deliverable of the Customer Driven Project, made by students at NTNU. Vaudeville showcases Java technologies, assisted music composition and other concepts behind the project.
Abstract:
Engineer tools like the familiar IDEs (Eclipse/IDEA/NetBeans etc.) have user interfaces increasingly different from office tools like Microsoft Office. When creating applications for end users it is important to aim for the look and feel this group is comfortable with rather than what would be intuitive for the engineer. At Exie AS we have developed an open source Swing look and feel component that dramatically simplifies this task.
Just as it is important to utilize frameworks to improve productivity when developing web-based solution, so is the case with rich clients/desktop applications. A significant part of a desktop application consists of UI and IO plumbing. When should various menus, buttons and tool bars be enabled? Flexible docking frameworks, user preferences etc. There are various RCP frameworks available, however for a Swing based client the NetBeans RCP is perhaps the most complete.
How to create an NetBeans RCP client and make it look like a member of the Microsoft Office package? It is quite easy, and I am going to show you how.
Software development is hard. It takes years to become a good developer
and many more years to become an expert. How much of this time is
necessary? Are there any shortcuts?
Alle er enige om at dokumentasjon i systemutviklingsprosjekter er
nødvendig. De fleste synes det er et kjedelig arbeid og vil heller
gjøre andre ting, som f.eks. programmering. Mange skriver lange
dokumenter som blir liggende bortgjemt i skuffer og kott uten å bli
lest. Kanskje heldigvis, siden dokumentene ofte blir utdaterte over
tid og dermed blir både ganske verdiløse og direkte skadelige.
Dokumentasjonsarbeid er tradisjonelt både kostnadskrevende og lite
lystbetont arbeid. Hvilken type dokumentasjon er den viktigste?
Hvordan kan vi gjøre det både enklere, billigere og mer motiverende -
og ikke minst, mer anvendelig?
Dette foredraget gir noen refleksjoner rundt temaet med konkrete
eksempler på hvordan dokumentasjonen kan gjøres mer levende gjennom en
wiki integrert med andre utbredte støtteverktøy som Subversion og
Maven. Vi ser også litt på modellbasert dokumentasjon med UML, hvordan
krav beskrives i brukstilfellemodeller, og hvordan arkitektur kan
dokumenteres.
Abstract
Dynamic languages and frameworks come in different shapes and forms but they all get attention from architects looking at providing application agility and better development speed while preserving the systemic qualities of more traditional runtimes (scalability, manageability, etc...)
Abstract
Service Oriented Architecture is all over us. There seems to be some kind of consensus that one type of
SOA services are services that are responsible for the core business objects - and vendors are monitoring
and releasing their SOA Data Server products to close the gap. By pioneering the SOA space with EDR,
we have gained lots of valuable of experiences of how to solve the Master Data challenges in SOA.
This talk will discuss the main contenders for the ownership of your business objects definitions, and
comment on their consequences - and then follow up with a "less is more" approach to enable companies
to gain the combined advantages of all the platforms by extending the EDR pattern to also include Master
Data Service (MDS) features.
Unit testing has become a mainstream task. Most developers do it. Most project leaders and architects expect their team to write tests. However, practice has taught us that a lot of teams write few tests, or spend too much time writing and maintaining them. Different development teams make common mistakes, run into similar issues and find their own solutions for them. This costs a lot of valuable time.
Abstract
Utdanning og kompetanseheving er en kontinuerlig prosess, kanskje mer i IT bransjen enn i
noen annen bransje. Nettopp derfor er det så viktig at kunnskapen formidles på en slik måte at alle har de beste mulige forutsetninger for å lykkes med å lære. Ulike roller og bakgrunn er med på å skape et komplekst bilde med lærende og lærere.
Gjennom foredraget trekkes det paralleller mellom kunnskapsformidling internt i bedrifter, eksternt til kunder og til Bachelor studenter. Det pekes på utfordringer og muligheter knyttet til kunnskapsformidling og hva slags lærdom man kan ta med seg fra de ulike vinklingene. Man går også i dybden på den forskningsbaserte undervisningen som er et påkrevd fundament for alle høgskoler i Norge i dag og ser hvordan forskningsbasert opplæring kan være med på å gi kunnskapsøkning i bedrifter en ny dimensjon. Praktiske teknikker presenteres for å gi tilhørerne et konkret ”produkt” å ta med seg tilbake til egen hverdag.
Gjennom presentasjonen settes det fokus på teknikker som forskningsbasert undervisning og hva det vil si både å gjennomføre dette, men også hva man får ut av det. I tillegg vies det blant annet tid til å se på prosjektbasert læring og prinsipper rundt scaffolding (stillasbygging).
Norges Informasjonsteknologiske Høgskole (NITH) utdanner Bachelor studenter innen
informasjonsteknologi og driver med forskning innen flere områder blant annet for å gi grunnlag for innovative og aktuelle utdanninger. NITH er den eneste høgskolen i Norge som har spesialisering på JEE5 og EJB 3.0 for sine programmeringsstudenter. I Mesan AS er det daglige utfordringer knyttet til kompetanseoverføring til kunder og andre eksterne aktører i prosjekter. Formidling av kunnskap er en av suksessfaktorene både for å kunne ha dynamiske, fungerende team og likedan for at man skal kunne ha en inkluderende dialog med kunde.
Abstract
Deltakerne på denne sesjonen vil få innsikt i praksiser for effektivt å kommunisere og prioritere krav, estimere kostnader og gjennomføre utviklingsprosjekter. Ettersom dette er temaer uten fasitsvar legges det opp til mye diskusjon og interaksjon.
Programvareprosjekter mislykkes ofte med å levere lovede resultater, og kostnadsoverskridelser er en stor og hyppig utfordring. Mangelfull kravhåndtering er ofte en underliggende årsak til disse utfordringene. Det finnes imidlertid en rekke indikasjoner på at gode samarbeidspraksiser kan redusere omfanget på problemet. Det har vært anslått at samarbeid og kommunikasjon utgjør opptil 70% av den totale tidsbruken i programvareprosjekter, og å anbefale en høy andel av samarbeid og kundeinvolvering er derfor ikke noe nytt. Utfordringen er imidlertid å identifisere hva som utgjør et godt samarbeid, og hvordan dette kan oppnås.
Mange utviklingsorganisasjoner benytter seg i økende grad av iterative og inkrementelle prosesser, for eksempel Scrum. Imidlertid har også de smidige prosessene, og andre prosesser slik som RUP, mangler når det gjelder å involvere sentrale aktører som kunder, interaksjonseksperter og brukertestere. De iterative og inkrementelle prosessene er unektelig bedre utrustet enn de sekvensielle prosessene (fossefall) når det kommer til å håndtere disse behovene, men de er samtidig også langt mer innstilt på å tilfredsstille behovene til utviklingsteamet.
Denne sesjonen skisserer samarbeidspraksiser vi mener øker sjansen for verdiskapning i utviklingsprosjekter. Hovedfokuset er praksiser for å:
- Definere en prosess som forbedrer prosjektgjennomføring
- Kommunisere og samarbeide om kravhåndtering og forretningsprioritering
- Samarbeide om estimering og planlegging
Et overordnet prinsipp for diskusjonen vil være å skissere et rammeverk for kravhåndtering som illustreres gjennom en kommunikasjonspyramide. Denne pyramiden skiller mellom fem generiske nivåer for kommunikasjon om krav, som er nyttig i de fleste prosjekter. Disse er:
- Forretningsmål
- Overordnede krav
- Detaljerte krav (f.eks. brukerhistorier)
- Utviklingsoppgaver
- Kildekode (f.eks. konkrete funksjoner)
For hvert nivå presenterer vi en oversikt over hvilke roller som typisk bør være involvert i kommunikasjon og samarbeid. Rollene som diskuteres inkluderer sluttbrukere, kunder, interaksjonsdesignere, utviklere, testere og prosjektledere. Det blir også presentert erfaringer fra et pågående forskning- og utviklingsprosjekt innenfor området.
Abstract
Ved hjelp av rollespill vil Rasmus og Vidar dele sine erfaringer fra et smidig prosjekt. Sesjonen kommer til å bli delt i to:
- I første del vil Rasmus og Vidar kronologisk fremføre prosjektets historie fra unnfangelse til realisering. De kommer til å demonstrere teknikker som er blitt brukt og hvordan disse passer inn i et smidig tankesett.
- Tilhørerne oppfordres til å notere seg emner som ønskes diskutert under del 1. Dette kan være emner man lurer på, ønsker videre utdypet, er skeptiske til eller forslag til andre teknikker. I del 2 diskuterer vi disse temaene i plenum.
Noen stikkord: Kommunikasjon, brukerhistorier, estimering, prioritering, risikohåndtering, leveranseplanlegging, retrospektiv med mer.
Abstract
With agile methodologies gaining adoption, organizations are quick to setup their CI infrastructure. Yet they soon realize that having a full CI strategy involves more than just a CI server. When is code being reviewed? Should the build break if a unit test fails? How to solve integration issues? Does your process need to go all the way up to releasing to production?
In this Bird-of-a-Feather session we will share our experiences addressing these and more questions in large scale enterprise environments.
Abstract:
Mario Aparicio og Eirik R. Larsen fra Ciber presenterer erfaringer med bruk av webrammeverket Seam og prosessmotoren jBPM.
VRVask er et system utviklet av CIBER Norge for validering, manuell korrigering, og rapportering av store antall banktransaksjoner. Systemet er todelt og består av en batch-applikasjon og en web-applikasjon som kommuniserer gjennom en felles database.
For utvikling av web-applikasjonen ble webrammeverket Seam valgt. Bakgrunnen for dette valget er Seams abstraksjon av request / response modellen og støtte for lange brukerinteraksjoner, conversations. Batch-delen av løsningen ble utviklet som en standard Java-applikasjon med Spring og Hibernate.
Vi opplevde Seam som et godt valg av rammeverk for web-løsningen da det gav enkel integrasjon mellom webgrensesnitt, domene og database. På enkelte områder støtte vi imidlertid på utfordringer som muligens kunne vært løst bedre med andre rammeverk.
I utviklingen av batch-løsningen var Spring og Hibernate velegnede rammeverk for håndtering av database og dependency-injection. Derimot fikk vi problemer med håndtering av tilstandslogikk i batch-prosessen. Kompleksiteten ble undervurdert, og vi endte opp med å lagre tilstand i databasen og håndtere all tilstandslogikk programmatisk. Løsningen ble derfor vanskelig å utvikle og vedlikeholde. Etter å ha analysert problemene i batch-løsningen så vi at en prosessmotor med fordel kunne brukes for å håndtere tilstand. Vi valgte å se på prosessverktøyet jBPM da dette er et mye utprøvd verktøy som fungerer bra i et Java-miljø. jBPM er i tillegg godt integrert med andre JBoss-produkter som Hibernate og Seam.
I presentasjonen beskriver vi positive og negative erfaringer med Seam i prosjektet og drøfter når det er fornuftig å bruke dette rammeverket fremfor andre web-rammeverk. Videre presenterer vi hvilke fordeler vi kan oppnå ved å bruke jBPM, og hvilke alternativer man har når man skal innføre et slikt verktøy i tilstandsfulle applikasjoner. Til slutt vil vi fremføre eksempler fra opprinnelig løsning og løsning med jBPM.
Abstract:
When the Spring framework hit the marked, it revolutionized the way we build our applications. Dependency injection, and inversion of control became well known terms, and it is difficult to imagine how we managed without them. But there is one aspect of the Spring framework that has been fiercely discussed for a long time; What is the best approach to configuring our applications for deployment in multiple environments?
I have struggeled with this problem since my first encounter with the Spring framework, and over the years I have tried just about all the techniques there are. Some of them turned out to be bad - some of them turned out to be really bad. In this talk I will go through some of the techniques and approaches I have tried, and discuss their strengths and weaknesses.
Based on these trials and errors, I have put together a framework that aims to enhance the Spring container - enabling it to be differently configured for different target systems. I will demonstrate how you can use this framework to make your applications dramaticly easier to configure, easier to test, and less prone to malconfiguration in production and test environments.
Through a project at NAV (The Norwegian Labour and Welfare Administration) for the pension program the presenters has significant experience using JSF, Spring Web Flow and AJAX as a platform for rich web-applications. The project is one of the largest java projects in Norway, and the presenters have been working with development of the new self-service application, and clerk administration application for NAV.
Development is about more than writing code. It is even about more than writing tests! In order to produce something of value, we have to deliver reliable software into production. In an organization where the consequence of failure is great, we need to make sure that what we deliver works as intended. At the same time, even in a seemingly static world, many problems are hidden until the very end of the project. To make matters worse, complex technology and organizational processes inhibit our ability to act to new information with sufficient speed.
The talk shows how we can implement a rigorous, yet agile process. It is based around our experiences of putting the good idea of continuous integration and other agile methods into life and using this as the basis not just for the technical process, but for the whole improvement program for our organization. We have expanded our process to cover simulated production as a part of the testing effort. This way, we can guarantee that the actual delivery day will be uneventful.
The audience will come away from the talk with a good idea on how to improve their build process. The talk will cover both practical aspects, architectural changes that improves continuous integration, and what change you need to make in your organization to streamline the value chain from a code change to production readiness.
Abstract
FitNesse is becoming a buzz word in the Agile community. People have seen
it used in small examples, but may not think it is appropriate for their
project. This session will show how it has been a great success factor in a
critical Norwegian banking project at BBS, and how it was valuable to both
developers and domain experts. The talk will present technical
tips and tricks with code examples for writing reusable and maintainable
tests and code. It will take you through the obstacles we met along
the way, and how we overcame them.
Abstract:
Alternative språk til Java som kjører på VMen er i vinden om dagen. Groovy, Jython og JRuby er eksempler på populære språk som fler og fler eksperimenterer med, og som bransjen er iferd med å ta i bruk. Felles for disse språkene er at kildekoden blir kompilert til Java Bytecode før den kan eksekveres på JVMen.
Målet med dette foredraget er å gi en oversikt over veien fra kildekode til kjørende bytecode. Dette foredraget starter med en rask gjennomgang av kompilatorteknikk, etterfulgt av en gjennomgang av den fullstendige implementasjonen av et enkelt eget-utviklet språk - som kjører på JVMen. Vi vil forklare hvordan vi parser kildekoden og sjekker syntaktisk korrekthet. Neste steg blir å vise hvordan man genererer Java assembly-kode, som vi deretter bruker for generering av eksekverbar bytecode.
Foredraget vil være en teknisk sesjon, med live-demoer av kjernekonseptene. Vi vil runde av foredraget med en kort diskusjon av mulige motiver for å ville utvikle egne språk for VMen.
Fri programvare handler om deling, gjenbruk og samarbeid - og flere
store virksomheter velger nettopp åpenhet som sin viktigste
innovasjonsstrategi. Fri programvare anslås å være en viktig driver for
utvikling av framtidens løsninger og ha samfunnsøkonomisk betydning. Fri
programvare gir lønnsomhet for kunder, leverandører og samfunnet
generelt. Fri programvare representerer allerede store
businessmuligheter i Norge, og Norden kan utvikle en sterk industri
knyttet til fri programvare. Hvordan skape lønnsom innovasjon for kunder
og leverandører?
Scrum was designed to achieve a hyperproductive state where productivity increases by 5-10 times over industry averages and many collocated teams have achieved this effect. The question for this presentation is whether distributed, outsourced teams can consistently achieve the hyperproductive state. In particular, can a team establish a localized velocity and then maintain or increase that velocity when distributing teams across continents.
Abstract
In this session we'd like to show future and current state of Java ME development and also
talk about incoming new mobile standards like MIDP 3.0. Major part of
this session focus on the demos about Java ME
development.
The topic of this presentation is about fastest growing open source Java grid
computing framework called GridGain and how its focus on elegant simplicity and
Enterprise Java integration is helping to revolutionize the grid computing for Java
in the same way as Spring or JBoss have changed Enterprise Java landscape.
The presentation will start with an introduction to grid computing and specifically
data and compute grids. MapReduce will be discussed. Real-life examples will
be discussed as well as common pitfalls, patterns and anti-patterns of using grid
computing in real life.
After introduction a comparison between GridGain and Hadoop (another popular
MapReduce implementation) will be given with usual pros and cons of both
projects.
To underscore the topic of presentation it will also include live demonstration of
writing a simple application and grid enabling it to run on a small grid right in front
of the audience. All coding during demonstration will be done live. Detailed and
in-depth explanations will highlight that grid computing in Java can be fun, simple
and productive to use in everyday applications and systems.
This talk focuses on the ways that Groovy can turn a traditional Java developer's world-view upside down.
This talk focuses on integrating Groovy with your legacy Java codebase in a way that wouldn't raise an eyebrow in the most conservative of organizations.
With the emergence of Web Services and the evolution of WS-*
standards, the enterprise application integration vendors were quick
to realise their traditional business model was under threat. On the
back of their large installed bases, vendor products were offered to
customers to help them deploy and manage their attempts to develop
Service Oriented Architectures, with the implication that Web Services
were of little use without additional middleware to deal with their
alleged inherent complexity.
With the JavaFX SDK Technology Preview having been recently released, this session will get you up to speed on JavaFX regardless of whether you've had any experience with it.
Abstract:
Amazon Elastic Compute Cloud (EC2) provides a fantastic way to deploy scalable machine images, but what to do when you want an application to scale across the machine images you have provisioned? This session discusses the Elastic Grid, an approach that provides dynamic allocation, management, and scalability of applications, using Amazon EC2 as the backbone. It also introduces the open-source technologies Elastic Grid is based on: Rio and Apache River (Jini™ network technology).
The Elastic Grid provides an architecture for developing, deploying, and managing distributed applications composed of services. Key to the architecture are a set of dynamic capabilities and reliance on policy-based and quality-of-service mechanisms. The Elastic Grid reduces the complexity surrounding the development of dynamic services by introducing Jini network technology remoting for POJOs as well as by providing a simple component model.
The Elastic Grid extends Amazon EC2's virtual grid environment, enabling users to manage and dynamically scale Amazon Machine Images (AMIs) based on declarable SLAs, as well as deal with partial failure of AMI instances. Rio reduces the complexity surrounding the development of dynamic services by introducing dynamic Jini network technology remoting for POJOs, as well as providing a simple component model.
The presentation demonstrates how IntelliJ plug-ins for Amazon EC2 and Rio ease building and deploying a sample application distributed over the Amazon EC2 grid. With the Elastic Grid solution, the application will scale on the Amazon EC2 grid by starting and stopping Amazon EC2 instances accordingly to declared SLAs (service-level agreements).
Good tools for automated web-testing have been around for quite some time, and many projects are starting to include them as a part of their build-process. We started using web-tests on Storebrand's online insurance-application back in autumn 2006, and the project is still supported by web-tests this very day. The talk gathers on experiences from this and various other Objectware projects, putting together a good bunch of experiences, recommendations, guidelines and hints for getting your project's web-testing in order.
Topics include:
- Why web-tests are evil!
- When should you NOT use web-tests
- How many web-tests should you maintain?
- How you can get the users to report bugs by writing tests for you
- Getting a CI/testing server to run the tests for you
- Combining web-tests with FitNesse acceptance testing
- Behaviour Driven Development using RSpec with web-tests
- Project testing strategy (and where web-tests fit in)
4 years ago one had to spend literally millions of NOK just for the
publishing rights to implement a good map solution with a detailed map
of Norway. Additionally, many projects had a complex client combining
javascript and a server side component for displaying the map in the
browser, and probably a back end for rendering the maps. Then in 2005
Google launched Google Maps, opened its API, and one could add a map
to a project in minutes. Decent map quality, free client and no need
to pay a fee for publishing rights.
As you hang up the phone after talking to your wife, you know you have to prepare an important dinner. You're not really motivated, neither sure where to find the right ingredience. But in fear for your wife you never consider objecting. Some time later, almost forgetting the task, you head for the grocery store. Since you're no expert on cooking you ask for help. Heading back home you decide to call a couple of friends to help you - since you really have more important things to do. When your wife comes home she stops suddenly with a strange look on her face; "What!? I can't serve rabit! Did you forget that we are having The Animal Foundation?". I respond weakly; "They don't like animals?". "They don't like killing them, you idiot!
This talk covers the challenges we meet from someone defines a strategy and approves developing an IT-system to when someone else actually starts implementing it. Most of these challenges do not require "rocket science", so why does it happen over and over again?
To finish of Tom will also show us a totally different approach where companies can meet these challenges and save months and millions, keep momentum and committment and gain tons of value!
NB! This talk should also be interesting for developers who hasn't been involved in the stages before implementation, since you're the one they'll blame at the end.
Uten læring av egen og andres erfaring er det vanskelig å bli særlig
god i programmering, prosjektledelse, estimering, kommunikasjon med
kunde og andre viktige gjøremål. Gjennom flere empiriske studier har
vi funnet vi at både "on-the-job" læring og tradisjonelle
prosjektgjennomganger (post-mortem reviews, retrospectives,
erfaringsrapportering m.m.) i mange sammenhenger har store svakheter
og ofte gir feillæring og overreaksjoner i stedet for økt innsikt og
bedre prestasjoner. Ønske om å lære noe fra en smertefull erfaring er
for eksempel ofte større enn mulighetene og evnene, og det er derfor
også viktig å vite når man ikke bør prøve å lære av erfaring! I denne
presentasjonen går vi gjennom en del feilkilder og hvordan disse kan
unngås for å forbedre evnen til læring av erfaring i
systemutviklings. Avslutningsvis avholdes det 3. norgesmesterskapet i
estimering (Tidligere vinnere er: Sindre Mehus og Tore Engvig). Som
tidligere vil finalistene i estimerings-NM kunne glede seg over
gavekort fra en av byens bedre restauranter.
Begrepet "smidig" har blitt så hypet de siste årene at de faktiske verdiene i begrepet er i ferd med å bli utvannet. "Smidig" er tatt i bruk mange steder, men mange har opplevd å ikke få den ønskede effekten. I dette foredraget vil vi ikke ha noen grunnleggende gjennomgang av smidig prosjektledelse, men heller dykke dypere ned i utvalgte aspekter hvor vi ofte har sett eller begått feil, eller har sett stort forbedringspotensiale. Foredraget vil i stor grad ta utgangspunkt i eksempler fra forskjellige prosjekter vi har vært involvert i de siste årene, og belyse
praktiske aspekter som vi har sett folk sliter med. I tillegg vil vi se på en grunn til å kjøre smidig som ofte ikke er godt nok belyst: *Den økonomiske*.
Trond har bakgrunn som siviløkonom. Christian har bakgrunn som utvikler. Begge har endt opp som prosjektledere med sterkt fokus på smidig prosjektmetodikk og ledelsesfilosofi. Til sammen har de ca 20 års erfaring fra bransjen, men de gjør fortsatt feil, lærer fortsatt nye ting og ser stadig forbedringspotensialer.
Scala fuses object-oriented and functional programming concepts into an
elegant, statically typed programming language for the Java Platform.
The name Scala stands for "SCAlable LAnguage."
Are you writing code that never gets used? Are you struggling to make the code fit your requirements?
Behaviour-Driven Development (BDD) is a fresh breath of air in the agile community, and its primary
focus is to deliver software that matters. -For the end users. BDD builds upon several agile tools and
practices like Acceptance-Test Driven Planning, Example-Driven Devlopment, FIT, User Stories and TDD,
and bring them together in a consistent whole.
You are a programmer on the Java platform, and you have been hearing more and more about Ruby, Ruby on Rails, and JRuby. What's this stuff all about? Why would a Java programmer care about these technologies? How will it make you, as a programmer on the Java platform, more productive?
Over the past two years. Ruby on Rails has brought the Ruby programming language into the mainstream. Ruby offers a cleaner, simpler, faster, and much more fun language for day-to-day development. Rails has changed the face of web development with legendary productivity gains and minimal configuration. The two are now available for your Java platform projects with JRuby, an implementation of Ruby for the JVM.
In this session, we'll walk through how you can get JRuby up and running. We'll demonstrate common use cases for JRuby like GUI development, web development with Ruby on Rails, and more. By the end of this session, you'll be ready to download JRuby and start adding it to your own projects, or start a few new ones. JRuby is ready for you!
Java SE is on over 90% of desktops and Java ME is on over 90% of
mobile phones. Java is also making a big dent in the consumer space such as set top boxes, Blu-Ray Disc players and so on. Although Java client technology is ubiquitous, consumer applications are not because development and deployment for consumers is still too hard.
Abstract
I sammenheng med utbygging av et kraftanlegg i Amazonas ble en indianer fra
lokalbefolkningen trukket inn som vitne i rettsaken og stilt ovenfor den klassiske eden;
"Do you swear to tell the truth, the whole truth and nothing but the truth so help you
God?". Han svarer; "No, I can only tell you what I know".
Vi som jobber med teknologi er alle meningsprodusenter idet vi lager en slags
virkelighet som brukerne må forholde seg til. Vi har derfor på mange måter stor
innflytelse i det å konstruere en virkelighet, en sannhet som mange brukere ikke setter
spørsmålstegn ved. All teknologi handler mye om klassifikasjon av objekter og
relasjoner mellom objekter, kategorier etc. Klassifikasjon vil si å dele inn objekter,
personer, dyr eller andre fenomener etter kategorier eller typer. Et
klassifikasjonssystem er en type kunnskap og kunnskap vil alltid ha et ideologisk aspekt.
Men hvor bevisste er vi dette ansvaret?
Gjennom en kort introduksjon av de tidligste sosialantropologiske studier av
matklassifikasjon og totempæler vil jeg forsøke å vise at dagens semantiske web på
mange måter er i tråd med disse tidligste fagteorienes hovedtanker, som for eksempel
det å se det enkelte system som avgrensede enheter, som kan studeres alene.
Avleggere fra tidlige forsøk på å se kunnskap i lys av klassifikasjonssystemer skinner i
dag gjennom hos flere teoretiske tilnærminger som det til stadighet refereres til og jeg
vil argumentere for at det er dags for å trekke inn verktøy koblet mot en metodikk som
både er i tråd med tida vi lever i og som løfter blikket fra studier av avgrensende enheter
og som retter blikket mer mot brukerens egenartede og unike forståelse av det samme
fenomenet.
Jeg er opptatt av å formidle tungt stoff på enkle måter – og vil bruke konkrete
eksempler for å få publikum med på det som kan kalles en faghistorisk charterreise med
konkrete eksempler hele veien for å illustrere poengene. De fleste vil nok sitte igjen med
noen aha‐opplevelser samt få ett innblikk i en fagverden man har mye til felles med til
tross for at man sjelden kobler fag som teknologi og antropologi sammen. Jeg vil anta at
folk vil gjøre seg en og annen tanke – og trekke litt på smilebåndet!
Dette er en erfaringsrapport fra MATS-prosjektet hos Mattilsynet, der
Computas implementerer og integrerer en kartklient i webklienten og
SWING-klienten. Rammebetingelsene for prosjektet var at kartserveren
skulle være Java-basert og åpen kilde, slik at det ville være mulig å
gjøre tilpasninger dersom det skulle være nødvendig. Videre var bare
rene serverløsninger relevant siden klienten kom til å være
egenutviklet. Valgmulighetene var derfor veldig begrenset; i praksis
kun GeoServer.
Selve klienten bruker OpenLayers, et åpen kilde JavaScript-bibliotek
som støtter de viktigste protokollene. Det ble vurdert å utvikle en
egen kartklient i SWING, men dette ble forkastet på grunn av
begrensningene for minneforbruk i kjøremiljøet. Dette førte på sin tur
til et behov for å kunne sende kartdata fra web-basert kartklient til
SWING-klient, som ble løst ved å la kartklienten gjøre et HTTP-kall
til SWING-klienten via en skjult IFRAME. Dermed var det heller ikke
lenger nødvendig å bruke WFS-T- protokollen for å kjøre transaksjoner
med geodataene direkte mellom klient og server, slik at vi kunne
begrense løsningen til WMS. Det er mulig at det senere vil dukke opp
krav som gjør det likevel nødvendig å utvide løsningen med støtte for
WFS-T, men dette vil ikke være et stort problem siden også WFS-T
støttes av GeoServer.
Til slutt noen ord om plasseringen av GeoServer i vår arkitektur. I og
med at den står ved siden av integrasjonsplattformen og er koblet
direkte mot databasen bryter den med alle SOA-prinsipper, men
alternativene viste seg å ikke fungere. En mulighet hadde vært å sette
GeoServer foran integrasjonsplattformen, men dette hadde ført til økt
risiko og mye merarbeid i prosjektet siden GeoServer er bygget opp
slik at den forventer direkte tilgang til databasen. Å inkludere
GeoServer i integrasjonsplattformen var heller ikke en god løsning da
dette hadde ført til ekstra arbeid for å kunne deploye GeoServer i
plattformen.
Debugging of Swing application is not always easy because it is visual toolkit and in many cases you can not just write an automated test that checks if your UI looks good, all components have right sizes, all necessary information is visible and painting done correctly. The presentation will cover some common difficulties connected to visual nature of Swing toolkit and provide fast solutions for solving them using Swing Explorer tool developed as open source project https://swingexplorer.dev.java.net. You will learn how to answer the following questions:
Which component painted this pixel? In which line of code?
Does your application access Swing from the correct thread ?
How does Swing perform painting step by step?
And even more...
If you are experienced or beginner in Swing and want to increase your productivity this session is for you. The session is going to present the latest debugging know hows appeared this year.
This talk is about how to use the stresses of writing unit tests to improve your code. If I'm having trouble writing tests, it's often because the design of my target code can be improved. The trick is to listen to the tests and let them drive my development — that's a hint as to why it's called Test-Driven Development. As a developer, you can sensitise yourself to find the rough edges in your tests and use them for rapid feedback about how to improved the design of your code.
Abstract:
Domain Driven Design with Object-Relational mapping is the state of
the art for testable object oriented programming in domains with
complex business rules. However, sometimes the domain contains natural
relations and object graphs that are too large to fit in main memory.
Even when you have sufficient memory, working with large object graphs
that are naively OR-mapped can easily give you performance problems.
Bjørn Bjerkeli and Eirik Maus present a few techniques they've used at
BBS to handle the one-to-too-many-relations (almost) without
sacrificing working on a pure domain model. These include domain
object fields based on database queries, iterators that "page"
entities in and out of memory and simplified methods for background
fragment processing.
This talk will focus on a special kind of wicked software projects - enhancement projects. They are very common and generally overlooked. Wicked enhancment projects exhibit many of the following characteristics:
- The project is delivering something like version 5.7 or 6.0 of a successful software product
- There is a large, buggy, legacy code base with little documentation
- There is a large number of product variations (configurations)
- The customer and user base is large and inhomogenous
- The original development team is long gone
- Sponsor/general management has lost interest (until something goes wrong)
- The current development team is doing all of support, O&M, and fresh development
- Activities other than developent consume a significant portion of the effort
- The developer motivation is low (churn is high)
- There is a high number of external dependencies
- Requirements are volatile
- Firefighting is the norm – defined processes are missing or frequently circumvented
Enhancement projects are especially hard because their origin is a successful product. The risk is generally high (chance of jeopardizing the whole customer base), but not treated as such. Success is expected, but many of the mechanisms for ensuring success are not in place.
Abstract
Code coverage is a lousy test quality indicator. Mutation analysis and testing, on the other hand, provides a better technique to improve your tests. This involves mutation of source code by introducing or modifying statements in small ways. The purpose is to develop effective tests or locate weaknesses in existing tests. This session gives an introduction to mutation testing, available tools and techniques. The content will consist of many examples, demonstrating mutation testing and the effectiveness of this technique.
Newspeak is a new programming language being developed at Cadence.
Newspeak is directly descended from Smalltalk, with heavy influences
from Self and Beta. Newspeak is a principled dynamic language, and
incorporates lessons drawn from a decade of experience maintaining
the Java language and VM specifications.
Given that object orientation underpins the Java language, it would be expected that anyone using Java would also know about OO. In one sense this is true, but there is more to effective modern object-oriented development than just creating a few objects and calling a few methods.
Kansellert pga sykdom
Datamaskinprogrammer regnes som litterære verk og vernes etter åndsverkloven. Det betyr i utgangspunktet at de reguleres av de samme bestemmelsene som f eks norsk lyrikk. Hvordan har det seg egentlig at dette ble resultatet – og er det lurt?
Spekulative markeder (slik som aksjemarkedet og oddsen) har i mange
tilfeller vist seg å være bedre enn eksperter når det gjelder å
forutsi hendelser. Dette har vært tilfelle innen en rekke områder -
innen alt fra estimering av oljepris fem år frem i tid til å tippe
hvem som vinner årets cupfinale. I dette foredraget vil vi gå gjennom
teori og praksis for å vise hvordan slike marked fungerer, og vi vil
vise hvordan teknikken kan brukes til estimering i
systemutviklingsprosjekter. Foredraget er basert på aktuell forskning
og våre egne erfaringer fra et systemutviklingsprosjekt hvor vi
innførte denne teknikken.
Åpne standarder, felles offentlig IT-arkitektur og fri programvare er begreper som du etter hvert har blitt en del av ordforrådet til regjeringen. Politisk rådgiver i Fornyings- og administrasjonsdepartementet Jørund Leknes vil i foredraget gå gjennom sentrale deler av regjeringens IT-politikk, forklare hvorfor valg av programvare nå står høyt på den IT-politiske agendaen og hvordan du som utvikler kan lage løsninger som forholder seg til dette.
Abstract:
Project Hydrazine was announced at JavaOne'08, by Sun Microsystems Inc., to
accelerate the development of Rich Cloud Applications (RCA) that deliver
rich content and user experience across the four screens of a consumer life
(PC, mobile, setop-box, TV, car).
In the current programming culture we have lost the OOP idea of objects
containing both logic and state, the idea of reuse has largely failed
due to impractical mechanisms, and combining pieces of code into larger
structures using AOP has not quite delivered on its promises. Building
large-scale software also gives us challenges with regard to complexity,
enforcing architectural rules and codebase explosion. What if we could
look at what we have and figure out a new way to address these problems,
while promoting the idea from domain oriented modeling and retaining
what works with what we have now? Composite Oriented Programing is a new
way of dealing with these problems, and this presentation will show how
the Qi4j implementation on the Java platform will enable you to get more
done with less work, and in a way that allows you to avoid the mentioned
problems. It will describe the COP terminology and show examples on how
to use Qi4j to implement domain oriented models.
Quercus is Caucho Technology's 100% Java implementation of PHP. This
technology is taking off not only because of the trend toward
scripting in the Java community, but also because of the performance
and reliability that Java adds to PHP. In this talk, we will present
the compelling reasons to use PHP on Java including availability of
applications, ease of view development, and performance improvements
of upto 89% over PHP with APC. We will show specific use cases of
Quercus such as using popular PHP applications like MediaWiki,
WordPress, and Drupal directly, bridging existing Java and PHP
applications, and using PHP as a view technology for Java. We will
also show the unique capabilities of the Quercus implementation
such as transparent clustered sessions and use of Java objects
natively from PHP. Finally, we will look at case studies of real
Quercus deployments such as LiveProcess, the leader in emergency
preparedness' planning for the healthcare industry, and others to
see how these applications take advantage of PHP on Java.
REST, the REpresentational State Transfer, is the architectural style underlying the HTTP protocol. In the last couple of years, REST has emerged as a compelling and simpler alternative to SOAP/WSDL/WS-*-based distributed architectures. In this session, Arjen will explain what REST is, how it can be used to build Web Services, and where it makes sense to use.
We will look RESTful frameworks such as JSR-311, but focus on creating RESTful Web services with the Spring framework. This will include the features included in the current release of the Spring framework, and new features that are coming in the next major release.
This talk will cover best practices for OpenESB usage and integration.
Abstract
This experience report will cover how our maven project moved from one single line of code in one webapp module to five webapplications and fourteen modules. There are very few best practises regarding how to organize a maven project over time. After talking to several peers and reading all available material I have not found any good solutions to this. This presentation is my effort to give something back to the java community and hopefully start a discussionon how you should organize your maven projects.
Keypoints:
- What is the best way to keep buildtime down to a absolute minimum?
- Should the modules be organized in vertical or horizontal modules?
- How should you use a maven repository?
- How do you handle releases
- When should you create a new module?
- What is the downsize of creating a new module?
Etter mange tiår med programvareutvikling skulle man tro at de fleste applikasjoner håndterer feil på en god måte. I realiteten blir exceptions slukt, kastet på nytt, innpakket, ignorert og tilfeldig logget - om de i det hele tatt er tenkt på. Denne sesjonen viser tilnærminger som fungerer og noen tommelfingerregler for feilhåndtering, samt fallgruver og grusomme eksempler. Vi diskuterer også checked exceptions - et eksperiment i Java - og forklarer hvorfor de bør unngås.
Abstract:
Many are already convinced of it: the social network is bound to be the personal portal of tomorrow. Whether you are using MySpace, FaceBook, LinkedIn or Plaxo: expect a whole new wave of mini applications that are specifically build to use and access the sea of crucial information that hides in social networks. This talk will introduce you to developing applications for this exciting new world. No code. Just inspirations and all the links you can absorb to get going yourself. See you soon on FaceBook!
As the number of services and applications inside your organization grows, it becomes increasingly hard to manage and control. When this happens it is important to start looking at implementing SOA governance. Because SOA governance is not widely understood (or is widely misunderstood), many common mistakes arise which result in duplicate efforts, less reuse, less interoperability and increased development time. During this talk we'll look at what exactly SOA governance is while exploring 5 common mistakes and how to avoid them.
Abstract:
Alternative languages like Ruby, Scala and Erlang are being picked up by the
large platforms and getting ever more attention. Many feel the need to learn a
new language, but how does one choose which "other" languages to learn and
develop in when there are so many worthy contenders?
Pythonistas have historically not been very good at marketing. This talk will
attempt to convince you that Python/Jython/IronPython deserves to be part of
your developer toolbox.
Language design choices in syntax, features and semantics influence what areas
a language is suited for and the community that grows around it.
Particular features and idioms of Python will be introduced and compared to
choices made by other relevant languages.
Finally, a demonstration of how effective development in Python can be using
the Django framework which has emerged as the premier Python web-framework.
Building sexy software that users love is usually a challenging endeavor. The open source Flex SDK and Java are a perfect combination of technologies for building rich, sexy software - for the web and the desktop. Flex applications can run in the browser using the ubiquitous Flash Player or on the Desktop using the new Adobe Integrated Runtime (AIR). In both instances Java can be used for the back-end of the application. The communication between the Java back-end and Flex front-end can utilize a number of different communication protocols, but the easiest and best performing is the open source BlazeDS library. This session will cover the basics of using Flex, Java, and BlazeDS to build sexy software for the web and the desktop.
Foredraget presenterer de vanligste sårbarheter i webapplikasjoner og trekker frem noen illustrerende skrekkeksempler hentet fra sikkerhetstester av norske webapplikasjoner. Vi vil så ta for oss hvordan Java-utviklere kan unngå å gjøre de samme feilene i sine
utviklingsprosjekt.
Abstract
Over the past years, successful practitioners have applied Agile methods like Scrum and eXtreme Programming (XP) on individual projects to cut development lead times, improve product quality and reduce engineering cost. For instance, time-to-market reductions in the range of 30-50% have been reported by leading companies. Now, as these practitioners seek to expand on their initial successes, they face many complex obstacles posed by the realities of today's business environment: multiple organizational silos, distributed teams, interfacing with 'non-agile' vendors and customer organizations, continued cost cutting, complex product suites, and the pressing need for innovation.
How can agile practitioners apply the fundamental tenets of Agile - integrated small teams, small releases, sufficient-to-purpose, etc - to provide the next round of significant returns from their Agile investment? Sanjiv Augustine of LitheSpeed will lead a discussion on adopting a philosophy of smallness within bigness to allow the scaling of Agile practices beyond individual projects to deliver process improvements in complex environments with multiple projects.
Abstract
Med lang fartstid fra store smidige prosjekter vil Thomas, Anders, Geir Magne, Kristoffer, Benjamin og Steinar dele sine erfaringer - på godt og vindt - med publikum. Først innleder de med korte lyntaler før paneldebatten bryter løs.
Abstract:
What is internal quality and why are metrics helpful? A comparison with a cake will
make it easy to understand: Not the optic and not the frosting on top of a cake
guarantee a good taste and a healthy enjoyment. The ingredients, the recipe, the
baking itself, the enjoyment of the cake, the great treat of it to keep in memory and
the comfortable feeling afterwards are part of the total value and quality of the tasty
cake. With the enjoyment of software is it likewise. The inner quality of software is
crucial for your success in software development projects. This talk gives answers
why this kind of quality is so important and how to gain better technical quality using
different metrics based on the usage of the open source software XRadar (and
others).
Resource Oriented Computing systems process resource representations, execute transformations and computations by defining processing in terms of compositions and asynchronous sequences of resource requests. Application development and deployment using SOA faces problems when organizational changes occur if the participating systems (service providers and consumers) are too tightly coupled. In SOA, messages and systems are inherently synchronous, promoting dependencies that filter to the organizational level. Resource Oriented Computing solves system and application integration issues by leveraging ESB, domain-specific languages, and shared memory mechanisms for integrating coupling points, not the applications themselves, by promoting event-driven interactions between system components, and by creating logical mappings of resources such as data or computations that are abstracted from the physical manifestation of the system deployment.
Last November, Spring 2.5 was released. This version of Spring, the de-facto Java EE application platform marks the beginning of the introduction of alternative ways to configure components. In the, we've mainly focused on provided XML as the main language to perform Dependency Injection on object. Since 2.5, Spring has introduced several new ways to doing this.
This session focuses on the various ways of using the Spring container to Dependency Inject objects such as the traditional XML language, the extensible namespaces, the @Autowired and @Component annotations, but also the innovative JavaConfig project that is capable of configuring Java objects using @Bean annotations.
Each has drawbacks and advantages and this session will discuss which one you should choose in what scenario. After this code-intensive session, you will walk away with a clear understanding of when XML is a good choice for configuration and when to opt for one of the annotation-based options.
Abstract:
In this talk we will attempt to summarize and share our experience from one year of developing commercial grade applications using JSR 296: Swing Application Framework. We will thoroughly cover the basics of Swing Application Framework, and dive into the most useful features, some best practices and potential pitfalls. Finally, we will reflect on the current state and future of SAF. The talk will act as a follow up on last years "Building Real Swing Applications", where we covered the fundamentals of building Swing applications.
With more than twenty years of Java experience between them, this presentation will be given by Escenic's Harald Kuhr, lead developer of Escenic Content Studio, and Bouvet's Swing expert Yngvar Sørensen.
Abstract
Lean and agile methods tell us to “see the system”.
System thinking skills are important for all agile teammembers. However they are not part of our day-to-day toolkit we got in school or university.
This session introduces the participants to 7 practical system thinking tools and visialisation techniques that will help us map and explore the dynamic complexity of our (software) projects.
These tools can be used in retrospectives, kickoffs, to look at long term consequences of policies and choices. They support the (software) management process at all stages – from specifying problems, to construction and testing of hypothesis.
The revered Enterprise Integration Patterns (EIP) book is
indispensable for handling messaging-based integration, but utilizing
these patterns in your own code can be tedious, especially if you have
to write the code from scratch every time. Wouldn't it be nice if you
had a simple API for these patterns that makes this easier? Enter
Apache Camel, a message routing and mediation engine that provides a
POJO-based implementation of the EIP patterns and a wonderfully simple
Domain Specific Language (DSL) for expressing message routes. This
session will introduce and demonstrate the power of Camel. So go on,
take a Camel ride!
Apache Tapestry is an open source Java framework that combines the best features of two worlds: the heavy-duty performance and scalability of Java
(not to mention its enterprise acceptance) with the productivity advantages of scripting languages such as Ruby.
Java has emerged as the language for enterprise-class development: it has the widest adoption, the largest class libraries, the best performance, and
greatest degree of enterprise acceptance ... and yet, traditional web development is a painful, unproductive slog: large amounts of configuration combined with constant
recompiles and redeployments.
Python and Ruby can be vastly more productive than Java but can't match Java in terms of performance and scalability, or acceptance in the enterprise.
Tapestry bridges the gap between these two worlds. It embraces convention over configuration on many levels. It enhances productivity with
live class reloading (changes to classes are picked up without a redeploy or restart) and best-of-breed exception reporting. Tapestry classes and templates
are small, simple and immediately understandable. Tapestry applications are fast, efficient and highly scalable. Tapestry lets you work in terms of your objects
and your methods: you can build entire applications and never think about a URL or a query parameter. Things just work!
Tapestry is a component framework; we'll see how the built-in components provide broad functionality and yet are extremely extensible. Many of the components
have built-in Ajax functionality, and building your own components is a snap.
This session will feature live demonstrations and even a bit of live coding. We'll demonstrate how Tapestry keeps you happy and productive like a Ruby or Python coder but still delivers
the results your boss and your customers need.
Abstract
If you were the owner of an airline, what percentage of seats would
you like to fill: 65% or 75%?
If you were developing new components, what percentage should succeed:
50% or 100%?
Surprisingly, a lean company would target the lower percentages and be
more successful.
How can this be? The first paradox of lean development is that by
doing one thing at a time instead of trying to do many things
simultaneously, everything will get done faster. The second paradox
of lean development is that if you never fail, you never learn, and
learning is the essence of product development.
Come to this talk to hear why it is better to focus on throughput
rather than utilization, and why you want to try lots of stuff and
keep what works, rather than picking the winners in advance.
The Applicaton Server is dead. But what about the Enterprise Service Bus? Are we facing phantom requirements and vendor-driven architecture all over again or does the ESB provide useful middleware services needed for enterprise development? Well, it depends on your requirements. In this talk we explore a real-world case and show how to implement a solution with and without an ESB. As it turns out, there are very good alternatives to typical ESB features. We consider pros and cons and present guidelines for the process of selecting the right tool for the job.
For decades, enterprise systems have been built around the database - the
original canonical data structure that everything had to integrate to.
The DBA was the most powerful person in the enterprise, even messages
standards were based on the database structures and it seemed everything
had to have a table associated with it. The time has come to think about
an enterprise free from the RDBMS - not free from persistence altogether,
but free from the lock-in of the classic RDBMS. John will talk through
some recent projects at several large financial institutions now building
global trading systems without a database in sight.
Abstract
The Web as we know it is about to change. Welcome to the event-driven Web—a system that addresses the architectural flaws of the Web, and facilities uninitiated server-side messaging. That's right! The event-driven Web does not necessitate a "click" to deliver content.
With this new paradigm, developers can initiate messages and events on the server—messages that are delivered to any type of Web client, including clients such as the iPhone, without the need for browser plug-ins or traditional polling. End-users receive streams of data, in real-time, making it possible to deliver data to clients as it arrives without the need to wait on a pool interval. Low latency delivery of information makes the Web an accommodating place for applications once thought to only be possible on the desktop, e.g., financial trading, auctions, sports betting, tools for analytics, business activity monitoring.
To understand the concept of event-driven Web, you first must understand its origins, the technologies and requirements behind it, its place in your applications, and the pitfalls. In this session, we will introduce you to all of the above with special focus on the pitfalls related to reversing the Web with an event-driven paradigm.
Considerations that we will discuss include connection limitations, network flooding, and scalability. In addition, attendees will be introduced to the various architectural options that are available to address these concerns. The techniques and technologies covered in this session include, but are not limited to Comet/Push implementations, Asynchronous Request Processing (ARP), and Java/JMS.
Abstract
This presentation explores the challenges and solution patterns for managing data and compute tasks in scale-out environments. It is based on experiences with using a wide assortment of software solutions for compute and data management in scale-out environments, including newer scale-out technologies such as data grids and compute grids as well as getting the best results out of traditional database and messaging solutions.
Abstract:
Mange smidige prosjekter opplever problemer med å holde oversikt over
et stadig voksende antall brukerhistorier. Dette medfører ofte at
prioritering og planlegging blir vanskelig og frustrerende, noe som
kan føre til at vi tar feil beslutninger ift hva som bør inngå i hver
leveranse.
User story mapping er en enkel måte å samle og organisere
brukerhistorier på. Teknikken fokuserer på hva brukerne forsøker å
oppnå og hjelper oss å forstå hvordan vi kan skape leveranser som gir
umiddelbar effekt. Brukerhistoriekart er et kraftig
kommunikasjonsverktøy som sprer forståelse for hvilket problem som
løses, hvordan og i hvilken rekkefølge.
Four years after the release of the Portlet 1.0 specification, the new Portlet 2.0 specification introduces many new features that will greatly improve the interactivity of portlet applications and portals. The specification introduces advanced coordination features such as portlet events standardizing inter portlet communication and public render parameters which allows several portlets to share the same render parameters. The new resource serving feature allows a portlet to deliver personalized resources to the browser such as images or PDF documents based on the current user preferences and profile, it also offers the capability to serve markup fragments from a portlet providing support for ajax portlet development. Portlets are now allowed to interact with the portal request and response with the possibility to read or write HTTP headers and insert markup elements to the head section of the portal page. Others important features such as enhanced content caching and portlet filtering have been also introduced in the specification.
Standards make the world go round. It would be impossible to mail a
package or send an email message, drive a car or take an airplane trip,
shop for food in a supermarket, obtain medical treatment in a hospital,
watch TV or movies, enjoy a sports game, or do any of the other things
the modern world offers without standards.
Abstract
Domain-Specific Languages are an "architectural hot-spot", as coined
recently by InfoQ editors. With dynamic languages such as Groovy, it
is easy to create a mini-language modelling a particular business
domain. Thanks to these DSLs, developers and subject matter experts
will be able to share a common metaphor, to deliver, hand in hand, the
final application to the end users.
Abstract
Turnaround is the time it take for the changes in code to propagate to the running application. It includes build time, deploy time and initialization time. Recently some developments in the Java ecosystem and IDEs made it possible to develop software with zero turnaround. This talk is an overview of these developments, which include dynamic languages like Groovy, JavaScript and JRuby, framework support for reloading like Tapestry 5 and RIFE, module approach in OSGi and generic class reloading approaches like HotSwap, JavaRebel and FastSwap.With each approach we discuss benefits and limitations.
We also review how to set up your build environment to get least possible turnaround whether you program legacy code or start from scratch.
The iLabs mobile toolbox is a an open source (Lesser Gnu Public License) java library for J2ME that makes it simple to make programs for social interaction on mobile phones. The library is quite portable, since it abstracts away some of the notorious problem spotsin J2ME programming: Keyboard handling, camera and sound handling. It provides ready-made interfaces to Facebook, XMPP (Jabber), Blogger and other APIs necessary for social interaction. The library includes a web browser library written entirely in J2ME that has proven extremely useful both for web browsing, and for user interface development when embedded in applications (clicking on an image on a "webpage" can for instance start a camera for image capturing). During the talk we will outline the anatomy of an application, the main elements of the library, and we will demonstrate how to build and deploy several small applications.
Abstract:
Har du en snikende følelse av at din trygge serielle hverdag er truet
og at parallellisering antagelig er noe du bør ha et forhold til før
eller siden, da er målet med denne enkle introduksjonen til
parallellisering å kunne vise at dette ikke nødvendigvis trenger være
veldig vanskelig.
Noen ganger har man behov for å splitte opp større jobber for eksempel
for å utnytte datakraften som er tilgjengelig over flere
prosessorkjerner, prosessorer og servere. Teknikker, infrastruktur og
rammeverk finnes for dette, men de er ofte komplekse å sette opp,
vanskelig å forstå og påvirker designet i for stor grad.
Jeg ønsker å gi en enkel (teknologi og produktuavhengig) introduksjon
til parallellisering, hvilke forutsetninger som må være på plass for
at oppgaver gjøres i parallell, noen problemstillinger knyttet til å
parallellisere, teknikkene master - worker, og map og reduce, og
eksempler på en del typiske problemer som er egnet for
parallellisering.
Dersom du allerede jobber med storskala parallellisering er nok ikke
dette presentasjonen for deg, dette er heller ikke en presentasjon av
googles MapReduce rammeverk.
Etter en introduksjonen til parallellisering vil jeg beskrive noen
konkrete problemstillinger fra BBS hvor vi har hatt behov for å
parallellisere jobber. Jeg kommer til å forklare hvorfor vi trengte å
splitte opp og parallelisere jobbene, hvordan vi gjorde det, samt hva
vi oppnådde rent konkret ytelsesmessig.
Abstract
Det utarbeides flere og flere selvadministrasjonsløsninger og det er et sterkt behov for å lage løsninger som gjør det mulig å tilby selvadministrasjon også får svært sensitive opplysninger, for eksempel helse opplysninger eller lignende. Data lagres ikke lenger i siloer slik som før og slik som Datatilsynet gjerne skulle ønske det. Denne presentasjonen gir deg konkrete råd om hvordan du kan lage et system som vil bli godkjent av Datatilsynet.
Foredaget vil ikke bare ha hovedfokus på java men den omkringliggende infrastrukturen som er nødvendig. Utviklere vil få forståelse av hva som bør være deres ansvar i en applikasjon og hva infrastrukturen bør støtte dem med for at systemet skal håndtere alle risikoer.



Intermediate
Embedded, Mobile and Gaming
Core Java
Methodology and Business
Introductory
Enterprise application development and integration
Introductory/Intermediate
Intermediate/Advanced
Advanced
Java Web Technologies
Birds of a Feather (BOF)
Emerging Technologies
Experience Reports