This document introduces the JSR 354 Java Money and Currency API. It provides an overview of key aspects of the API including currencies, monetary amounts, monetary context, currency conversion, and extension points. The agenda outlines possible hackday topics ranging from easy to hard, such as building a money machine application, adding new functionalities to the reference implementation, handling Bitcoin and other currencies, and improving performance.
Scala is an alternative JVM language with both object-oriented and functional programming paradigms. Scala development with the Java EE 7 platform is definitely possible and can be a pleasant experience. If you have uncertainty about how Scala can fit around the Java EE 7 platform, then this session aims to illustrate the huge benefit that Scala adoption can bring to the platform. Many other developers are taking advantage and the challenge of the JVM’s capability of being a vessel for multi-language programming. You no longer have to write every single project using Java, even if you like Lambdas experiences. For the developer and engineering terms that feeling a little braver than usual, Scala is attractive as it is strongly typed and lets you set the gauge on how object oriented or how functional you want to be. You will learn how to reuse the annotations and creating Scala plain object safely and concisely. This session will highlight and contrast the experience I had developing Scala solutions with Java EE, and there will be plenty of advice about using the functional programming features against the Java object oriented API.
Scala language overview
Java EE 7 architecture and design
WildFly 8 application server
Using Gradle as a build tool
How to create beans in Scala with dependency injection
JAX-RS endpoints
Servlet Endpoints
JMS Messaging
Scala adoption advice and hints for sustainable team development
JavaCro 2014 Scala and Java EE 7 Development ExperiencesPeter Pilgrim
Scala is an alternative JVM language with both object-oriented and functional programming paradigms. Scala development with the Java EE 7 platform is definitely possible and can be a pleasant experience. If you have uncertainty about how Scala can fit around the Java EE 7 platform, then this session aims to illustrate the huge benefit that Scala adoption can bring to the platform. Many other developers are taking advantage and the challenge of the JVM’s capability of being a vessel for multi-language programming. You no longer have to write every single project using Java, even if you like Lambdas experiences.
For the developer and engineering terms that feeling a little braver than usual, Scala is attractive as it is strongly typed and lets you set the gauge on how object oriented or how functional you want to be. You will learn how to reuse the annotations and creating Scala plain object safely and concisely.
This session will highlight and contrast the experience I had developing Scala solutions with Java EE, and there will be plenty of advice about using the functional programming features against the Java object oriented API.
Scala language overview
Java EE 7 architecture and design
Using Gradle as a build tool
How to create beans in Scala with dependency injection
JAX-RS endpoints
Servlet Endpoints
JMS Messaging
Scala adoption advice and hints for sustainable team development
BOF2644 Developing Java EE 7 Scala appsPeter Pilgrim
Developing Java EE 7 Applications with Scala (CON2644)
*Speakers: Peter Pilgrim*
Abstract: 750 words
Scala is an alternative JVM language with both object-oriented and functional programming paradigms. Scala development with the Java EE 7 platform is definitely possible and can be a pleasant experience. If you have uncertainty about how Scala can fit around the Java EE 7 platform, then this session aims to illustrate the huge benefit that Scala adoption can bring to the platform. Many other developers are taking advantage and the challenge of the JVM’s capability of being a vessel for multi-language programming. You no longer have to write every single project using Java, even if you like Lambdas experiences.
For the developer and engineering terms that feeling a little braver than usual, Scala is attractive as it is strongly typed and lets you set the gauge on how object oriented or how functional you want to be. You will learn how to reuse the annotations and creating Scala plain object safely and concisely.
This session will highlight and contrast the experience I had developing Scala solutions with Java EE, and there will be plenty of advice about using the functional programming features against the Java object oriented API.
Scala is an alternative JVM language with both object-oriented and functional programming paradigms. Scala development with the Java EE 7 platform is definitely possible and can be a pleasant experience. If you have uncertainty about how Scala can fit around the Java EE 7 platform, then this session aims to illustrate the huge benefit that Scala adoption can bring to the platform. Many other developers are taking advantage and the challenge of the JVM’s capability of being a vessel for multi-language programming. You no longer have to write every single project using Java, even if you like Lambdas experiences. For the developer and engineering terms that feeling a little braver than usual, Scala is attractive as it is strongly typed and lets you set the gauge on how object oriented or how functional you want to be. You will learn how to reuse the annotations and creating Scala plain object safely and concisely. This session will highlight and contrast the experience I had developing Scala solutions with Java EE, and there will be plenty of advice about using the functional programming features against the Java object oriented API.
Scala language overview
Java EE 7 architecture and design
WildFly 8 application server
Using Gradle as a build tool
How to create beans in Scala with dependency injection
JAX-RS endpoints
Servlet Endpoints
JMS Messaging
Scala adoption advice and hints for sustainable team development
JavaCro 2014 Scala and Java EE 7 Development ExperiencesPeter Pilgrim
Scala is an alternative JVM language with both object-oriented and functional programming paradigms. Scala development with the Java EE 7 platform is definitely possible and can be a pleasant experience. If you have uncertainty about how Scala can fit around the Java EE 7 platform, then this session aims to illustrate the huge benefit that Scala adoption can bring to the platform. Many other developers are taking advantage and the challenge of the JVM’s capability of being a vessel for multi-language programming. You no longer have to write every single project using Java, even if you like Lambdas experiences.
For the developer and engineering terms that feeling a little braver than usual, Scala is attractive as it is strongly typed and lets you set the gauge on how object oriented or how functional you want to be. You will learn how to reuse the annotations and creating Scala plain object safely and concisely.
This session will highlight and contrast the experience I had developing Scala solutions with Java EE, and there will be plenty of advice about using the functional programming features against the Java object oriented API.
Scala language overview
Java EE 7 architecture and design
Using Gradle as a build tool
How to create beans in Scala with dependency injection
JAX-RS endpoints
Servlet Endpoints
JMS Messaging
Scala adoption advice and hints for sustainable team development
BOF2644 Developing Java EE 7 Scala appsPeter Pilgrim
Developing Java EE 7 Applications with Scala (CON2644)
*Speakers: Peter Pilgrim*
Abstract: 750 words
Scala is an alternative JVM language with both object-oriented and functional programming paradigms. Scala development with the Java EE 7 platform is definitely possible and can be a pleasant experience. If you have uncertainty about how Scala can fit around the Java EE 7 platform, then this session aims to illustrate the huge benefit that Scala adoption can bring to the platform. Many other developers are taking advantage and the challenge of the JVM’s capability of being a vessel for multi-language programming. You no longer have to write every single project using Java, even if you like Lambdas experiences.
For the developer and engineering terms that feeling a little braver than usual, Scala is attractive as it is strongly typed and lets you set the gauge on how object oriented or how functional you want to be. You will learn how to reuse the annotations and creating Scala plain object safely and concisely.
This session will highlight and contrast the experience I had developing Scala solutions with Java EE, and there will be plenty of advice about using the functional programming features against the Java object oriented API.
JAX-RS and CDI Bike the (Reactive) BridgeJosé Paumard
This session explains how JAX-RS and CDI became reactive capable in Java EE 8. We put some new features of JAX-RS 2.1 and CDI 2.0 into perspective and show some reactive patterns to improve your application. Add Java 8 CompletionStage to the mix and this API trio becomes your best bet to easily go reactive without leaving the Java EE train.
QCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVMPeter Pilgrim
PETER PILGRIM – AGILE TESTING PRACTICES WITH JAVA PLATFORM APPLICATIONS
This talk covers the modern agile development practices for Java developer on the JVM. We will understand how digital Java engineers use testing frameworks and tools to build quality applications. We will approach this process from a technical and an infrastructure perspective. This discussion will focus on the development practice, clean code and code complete, from an agile point of view.
This talk will cover the experience of adopting Scala in the digital enterprise. It will provide technical and development advice to agile teams new to implementing Scala. Learning a new programming language is tough, even if you think that it has similarity to your current day-to-day language and shares the many of the same advantages of it.
Just like Java, Scala is statically typed and compiles to byte codes, it runs on the Java Virtual Machine. Yet Scala has different style, syntax and raison d’etre to Java. Scala enjoys are richer and stronger type system with a powerful inference and implicits engine. In this presentation, we will look at interesting object oriented design patterns and compare them functional equivalents. We will posit the question, why should the modern digital engineer look towards a new language?
Scala has had its fair of criticism and detractors and some of this statements about complexity are valid, but just like a magnetic compass it points the way north to innovation and an attempt to try something different. This presentation will guide through the best practice of introducing this marriage of philosophies. In fact, alternative JVM languages such as Scala and more importantly Groovy forced the Java language architects to eventually add Lambdas to the mother language of Java. We will understand how digital engineers can make the best use of Scala and we will provide some pointed comparisons to the latest features of Java SE 8.
or "Towards a Standard TAPI", presented at AUSOUG Connect Perth, November 2016. I've been using a combination of Table APIs and Transaction APIs to build complex but maintainable applications in Apex - something I encourage everyone to at least consider.
Demystifying Drupal AJAX Callback CommandsMichael Miles
When Drupal 7 was released in 2011, it came with an improved implementation of AJAX functionality. Good-bye “AHAH” and hello “AJAX Framework”. But four years later, some of the improvements that came along with the Drupal AJAX Framework go widely unused or unknown.
Introducing AJAX commands. The set of functions you should already be using, which allow AJAX callbacks to do much more then return rendered HTML.
This session will highlight and outline the Drupal AJAX command functions offered by the AJAX framework in both Drupal 7 and Drupal 8. In this session we will cover the following:
- The Drupal AJAX command functions.
- What functionality AJAX command functions provide.
- When and how to use the AJAX command functions.
- How to create custom AJAX commands.
Laravel is a PHP MVC based framework. It is as easy as codeigniter, yet provides powerful tools needed for large robust application.It is built on top of symphony components and is inspired by many other frameworks including RoR, Asp .net, Sinatra.This session focuses on the basics things needed to start building application on it.
Spring Data Requery is alternatives of Spring Data JPA
Requery is lightweight ORM for DBMS (MySQL, PostgreSQL, H2, SQLite, Oracle, SQL Server)
Spring Data Requery provide Query By Native Query, Query By Example and Query By Property like Spring Data JPA
Spring Data Requery is better performance than JPA
CoFX is the framework behind time cockpit (http://www.timecockpit.com). Learn about the data model of CoFX and see how to use it to extend time cockpit.
Singpore Oracle Sessions III - What is truly useful in Oracle Database 12c fo...Lucas Jellema
When organizations upgrade to the latest release of the Oracle Database, they will benefit from many improvements that are inherent to the product. However, to fully make use of the new release and thereby leverage the investment in Oracle technology to the max, it is important that DBAs and developers learn how to use new features. If they are not upgraded along with the database, they may use a modern platform no differently than its decade old predecessor.
This session will demonstrate a number of features in 12c that help developers achieve real benefits. These include Edition Based Redefinition, Data Redaction, JSON and RESTful Services, Pattern Matching, User Defined Types & XML and SQL Translation.
outline
Although most organizations using Oracle Database regularly upgrade to new releases, many of them spend little time on the upgrade of their database administrators and developers. Developers who have learned their essential skills in PL/SQL, SQL and database development with Oracle Database 7, 8 or even 9 often have never really absorbed the essence of later releases. They may have Oracle Database 12c at their fingertips, but fail to get their (bosses') money's worth from it. This obviously is a waste. If you use today's database platform as if it were its 20 year old predecessor, you might as well start using a much cheaper alternative. Instead, by spending some time on getting acquainted with modern capabilities of the Oracle Database, these database professionals will be able to make their databases fly again. Recent features and mechanisms will help them be more productive, create better performing and better scaling applications and write code that is elegant, concise and far more maintainable.
This will be a fast-paced session that challenges and sparks your creativity with SQL. And it provides you with a number of SQL power-tools that will help improve performance and maintainability of virtually any application. Any Oracle developer will benefit from this SQL injection ;-)
Slides from the Singapore Oracle Sessions presentation on July 13th 2015, sponsored by the Oracle ACE Program and organized by Doug Burns.
Moving from JFreeChart to JavaFX with JavaFX Chart ExtensionsBruce Schubert
JavaOne 2015 - Moving Enterprise Data from JFreeChart to JavaFX [CON7008]
JFreeChart provides very sophisticated charting capabilities which has made it the de facto charting tool for countless Java applications. JavaFX also provides beautiful and enticing charts which rival JFreeChart in many areas. This presentation discusses the challenges and experiences in moving complex business driven charts from JFreeChart to JavaFX, including using JFree's ChartViewer class. I share the lessons learned as I crossed the bridge from Swing-based charts to JavaFX charts.
Back to the basics: Modelando nuestro dominio #scbcn19CodelyTV
SOLID, Arquitectura Hexagonal, CQRS, DDD… total, que llega el momento de modelar nuestras entidades y servicios, y nos hacemos un lío que no sabemos ni por dónde empezar .
Sensación de bloqueo. ""Hostia, llevo 3 horas pensando y dibujando posibles alternativas y ninguna me convence. Al final será verdad que no tengo ni idea "".
Planteamos hipótesis erróneas del estilo… _si lo hago con DDD ""de verdad"" la query no aguanta ni 100 peticiones concurrentes, pero esto otro me parece una chapuza, y esto otro viola 7 de los 5 principios SOLID… ¡¡¡mmmmmamaaaaaa!!! ._
Keep calm.
En esta charla plantearemos distintos escenarios prácticos y reales. Casos de uso de esos que se pueden ver en un screenshot y donde la gran mayoría de desarrolladores web y móviles nos podemos ver identificados:
* Listado de items con 652342 filtros y combinatorias (backoffices, páginas de categoría o filtrados, búsquedas…)
* Tipologías de items con partes comunes pero pequeños matices (productos de distintas categorías por ejemplo)
* Distintas opciones a la hora de modelar nuestras interfaces para hacerlas realmente agnósticas de la infraestructura que hay detrás
En fin. Cositas que nos han supuesto un reto a la hora de plantearlas, que hemos fallado modelando y hasta que no lo hemos tenido picado no nos hemos dado cuenta de la magnitud de la tragedia, y batallitas que ojalá puedan serle útiles a alguien
Micronaut provides out-of-the-box integrations with a lot of tools and third-party libraries: Consul, Eureka, Hibernate, Kafka, Mongo, Micrometer, Zipkin, Hystrix, Swagger,... But sometimes this is not enough and you need to integrate with a new one.
In this talk, we will discuss the different options that we have to create a new configuration for Micronaut: bean factories, conditional beans, configuration properties,... and you will learn how to make the most out of it.
JAX-RS and CDI Bike the (Reactive) BridgeJosé Paumard
This session explains how JAX-RS and CDI became reactive capable in Java EE 8. We put some new features of JAX-RS 2.1 and CDI 2.0 into perspective and show some reactive patterns to improve your application. Add Java 8 CompletionStage to the mix and this API trio becomes your best bet to easily go reactive without leaving the Java EE train.
QCon 2015 Scala for the Enterprise: Get FuNkEd Up on the JVMPeter Pilgrim
PETER PILGRIM – AGILE TESTING PRACTICES WITH JAVA PLATFORM APPLICATIONS
This talk covers the modern agile development practices for Java developer on the JVM. We will understand how digital Java engineers use testing frameworks and tools to build quality applications. We will approach this process from a technical and an infrastructure perspective. This discussion will focus on the development practice, clean code and code complete, from an agile point of view.
This talk will cover the experience of adopting Scala in the digital enterprise. It will provide technical and development advice to agile teams new to implementing Scala. Learning a new programming language is tough, even if you think that it has similarity to your current day-to-day language and shares the many of the same advantages of it.
Just like Java, Scala is statically typed and compiles to byte codes, it runs on the Java Virtual Machine. Yet Scala has different style, syntax and raison d’etre to Java. Scala enjoys are richer and stronger type system with a powerful inference and implicits engine. In this presentation, we will look at interesting object oriented design patterns and compare them functional equivalents. We will posit the question, why should the modern digital engineer look towards a new language?
Scala has had its fair of criticism and detractors and some of this statements about complexity are valid, but just like a magnetic compass it points the way north to innovation and an attempt to try something different. This presentation will guide through the best practice of introducing this marriage of philosophies. In fact, alternative JVM languages such as Scala and more importantly Groovy forced the Java language architects to eventually add Lambdas to the mother language of Java. We will understand how digital engineers can make the best use of Scala and we will provide some pointed comparisons to the latest features of Java SE 8.
or "Towards a Standard TAPI", presented at AUSOUG Connect Perth, November 2016. I've been using a combination of Table APIs and Transaction APIs to build complex but maintainable applications in Apex - something I encourage everyone to at least consider.
Demystifying Drupal AJAX Callback CommandsMichael Miles
When Drupal 7 was released in 2011, it came with an improved implementation of AJAX functionality. Good-bye “AHAH” and hello “AJAX Framework”. But four years later, some of the improvements that came along with the Drupal AJAX Framework go widely unused or unknown.
Introducing AJAX commands. The set of functions you should already be using, which allow AJAX callbacks to do much more then return rendered HTML.
This session will highlight and outline the Drupal AJAX command functions offered by the AJAX framework in both Drupal 7 and Drupal 8. In this session we will cover the following:
- The Drupal AJAX command functions.
- What functionality AJAX command functions provide.
- When and how to use the AJAX command functions.
- How to create custom AJAX commands.
Laravel is a PHP MVC based framework. It is as easy as codeigniter, yet provides powerful tools needed for large robust application.It is built on top of symphony components and is inspired by many other frameworks including RoR, Asp .net, Sinatra.This session focuses on the basics things needed to start building application on it.
Spring Data Requery is alternatives of Spring Data JPA
Requery is lightweight ORM for DBMS (MySQL, PostgreSQL, H2, SQLite, Oracle, SQL Server)
Spring Data Requery provide Query By Native Query, Query By Example and Query By Property like Spring Data JPA
Spring Data Requery is better performance than JPA
CoFX is the framework behind time cockpit (http://www.timecockpit.com). Learn about the data model of CoFX and see how to use it to extend time cockpit.
Singpore Oracle Sessions III - What is truly useful in Oracle Database 12c fo...Lucas Jellema
When organizations upgrade to the latest release of the Oracle Database, they will benefit from many improvements that are inherent to the product. However, to fully make use of the new release and thereby leverage the investment in Oracle technology to the max, it is important that DBAs and developers learn how to use new features. If they are not upgraded along with the database, they may use a modern platform no differently than its decade old predecessor.
This session will demonstrate a number of features in 12c that help developers achieve real benefits. These include Edition Based Redefinition, Data Redaction, JSON and RESTful Services, Pattern Matching, User Defined Types & XML and SQL Translation.
outline
Although most organizations using Oracle Database regularly upgrade to new releases, many of them spend little time on the upgrade of their database administrators and developers. Developers who have learned their essential skills in PL/SQL, SQL and database development with Oracle Database 7, 8 or even 9 often have never really absorbed the essence of later releases. They may have Oracle Database 12c at their fingertips, but fail to get their (bosses') money's worth from it. This obviously is a waste. If you use today's database platform as if it were its 20 year old predecessor, you might as well start using a much cheaper alternative. Instead, by spending some time on getting acquainted with modern capabilities of the Oracle Database, these database professionals will be able to make their databases fly again. Recent features and mechanisms will help them be more productive, create better performing and better scaling applications and write code that is elegant, concise and far more maintainable.
This will be a fast-paced session that challenges and sparks your creativity with SQL. And it provides you with a number of SQL power-tools that will help improve performance and maintainability of virtually any application. Any Oracle developer will benefit from this SQL injection ;-)
Slides from the Singapore Oracle Sessions presentation on July 13th 2015, sponsored by the Oracle ACE Program and organized by Doug Burns.
Moving from JFreeChart to JavaFX with JavaFX Chart ExtensionsBruce Schubert
JavaOne 2015 - Moving Enterprise Data from JFreeChart to JavaFX [CON7008]
JFreeChart provides very sophisticated charting capabilities which has made it the de facto charting tool for countless Java applications. JavaFX also provides beautiful and enticing charts which rival JFreeChart in many areas. This presentation discusses the challenges and experiences in moving complex business driven charts from JFreeChart to JavaFX, including using JFree's ChartViewer class. I share the lessons learned as I crossed the bridge from Swing-based charts to JavaFX charts.
Back to the basics: Modelando nuestro dominio #scbcn19CodelyTV
SOLID, Arquitectura Hexagonal, CQRS, DDD… total, que llega el momento de modelar nuestras entidades y servicios, y nos hacemos un lío que no sabemos ni por dónde empezar .
Sensación de bloqueo. ""Hostia, llevo 3 horas pensando y dibujando posibles alternativas y ninguna me convence. Al final será verdad que no tengo ni idea "".
Planteamos hipótesis erróneas del estilo… _si lo hago con DDD ""de verdad"" la query no aguanta ni 100 peticiones concurrentes, pero esto otro me parece una chapuza, y esto otro viola 7 de los 5 principios SOLID… ¡¡¡mmmmmamaaaaaa!!! ._
Keep calm.
En esta charla plantearemos distintos escenarios prácticos y reales. Casos de uso de esos que se pueden ver en un screenshot y donde la gran mayoría de desarrolladores web y móviles nos podemos ver identificados:
* Listado de items con 652342 filtros y combinatorias (backoffices, páginas de categoría o filtrados, búsquedas…)
* Tipologías de items con partes comunes pero pequeños matices (productos de distintas categorías por ejemplo)
* Distintas opciones a la hora de modelar nuestras interfaces para hacerlas realmente agnósticas de la infraestructura que hay detrás
En fin. Cositas que nos han supuesto un reto a la hora de plantearlas, que hemos fallado modelando y hasta que no lo hemos tenido picado no nos hemos dado cuenta de la magnitud de la tragedia, y batallitas que ojalá puedan serle útiles a alguien
Micronaut provides out-of-the-box integrations with a lot of tools and third-party libraries: Consul, Eureka, Hibernate, Kafka, Mongo, Micrometer, Zipkin, Hystrix, Swagger,... But sometimes this is not enough and you need to integrate with a new one.
In this talk, we will discuss the different options that we have to create a new configuration for Micronaut: bean factories, conditional beans, configuration properties,... and you will learn how to make the most out of it.
The presentation introduces JSR 354 (Currency and Money). It will discuss the API from a user perspective, and gives details on the design decisions done. The presentation will demonstrate how the JSR models monetary capabilities, monetary amounts, currencies, roundings, financial arithmetics as well as formatting and currency conversion in a platform independent and flexible way.
The presentation is targeting more advanced developers being interested in modeling financial concerns in Java and advanced API design in general.
JSR 354: Money and Currency API - Short OverviewWerner Keil
JavaMoney is the new monetary API for the Java™ Platform as well as related projects and libraries. Whereas the API (JSR 354) provides a portable and extendible API for handling of Money & Currency models, Moneta provides a production ready reference implementation.
The JavaMoney libraries add additional functionalities that were built on top of the API such as
- Basic financial operations
- Rounding
- Currency conversion
- Extended formatting (usable for arbitrary types)
Introduction to JSR 354 (Currency and Money) by Anatole TreschCodemotion
The presentation introduces JSR 354 (Java Currency and Money). As a start the presentation will discuss some considerations done regarding numeric precision and will also strive some possible issues with the ISO 4217 currency standard. The second part presents the JSR’s API for representing and manipulating monetary amounts in different currencies (including virtual ones), currency conversion, complex rounding, formatting/parsing and more. Finally a running demo of the JSR 354 reference implementation shows things in action.
Monetary values are a key feature of many applications, yet the JDK provides little or no support. The existing java.util.Currency class is strictly a structure used for representing ISO-4217 currencies, but not associated values or custom currencies. It also provides no support for arithmetic or currency conversion, nor for a standard value type to represent a monetary amount. JSR 354: Money and Currency API aims to address this by introducing new types for money and currency. The JSR aims to address a wide range of general-purpose cases while being suitable for many domain cases; it provides formatting, foreign exchange, rounding, arithmetic, and strong typing. This session describes the motivation, use cases, and implementation of the API.
Struts has outgrown its reputation as a simple web framework and has become more of a brand. Because of this, two next generation frameworks are being developed within the project: Shale and Action 2.0. Action 2.0 is based on WebWork, and though its backing beans are similar to JSF, its architecture is much simpler, and easier to use.
Migrating to Struts Action 2.0 is more about unlearning Struts than it is about learning the "WebWork Way". Once you understand how simple WebWork is, you'll find that Struts Action 2.0 is a powerful framework that supports action-based navigation, page-based navigation, AOP/Interceptors, components and rich Ajax support.
Come to this session to see code comparisons and learn about migration strategies to use the kick-ass web framework of 2006.
This talk describes building Silverlight 3 applications using F#. Both Visual Studio 2008 and 2010 RC are demonstrated. This talk was given by Talbott Crowell at the F# User Group meeting on April 4, 2010 at Microsoft, Cambridge, MA.
Mit dem JSR 382 wurde ein JSR ins Leben gerufen, um das Konfigurieren von Applikationen zu standardisieren. Das Thema wird leider von vielen Entwicklern unterschätzt, obwohl Konfiguration zu einem der zentralsten Querschnittsthemen der Software-Entwicklung gehört. Als definitiv eine gute Idee, sich mal anzuhören, welche Konzepte sich hier bewährt haben...
Wie man Applikationen nicht bauen sollte...Anatole Tresch
Immer wieder hört man, wie man Applikationen und Lösungen den richtig baut. Wieso also nicht mal den Spiess umkehren und ansehen, was so alles passieren kann, wenn Architektur und Prozesse eben nicht optimal gelebt werden. Dann heisst es zurücklehnen, schmunzeln und zufrieden sein, wenn es im eigenen Projekt nicht ganz so schlimm ist...
How should IT architecture look like in the ages of Cloud and Devops? How do the changes and the technological evolution of the last years affect our systems and processes? Why is innovation and digitalization important? What means 'cloud-native', how should I build my solutions? To anwer these questions we will look at the "Big Five": Microservices and Containers, cloud and DevOps and finally BigData, IoT and last-but-not-least artificial intelligence.
In diesem Vortrag gehen wir der Frage nach, wie IT Architektur im Zeitalter von Cloud und DevOps ausgestaltet werden soll. Welchen Einfluss haben die Veränderungen und Fortschritte der letzten Jahre auf Systeme und Prozesse. Wieso sind Innovation und Digitalisierung so wichtig? Was bedeutet 'cloud-native' eigentlich und wie soll ich denn nun meine Anwendungen bauen? Dazu sehen wir uns fünf Innovationsbereiche etwas näher an und analysieren ihren Einfluss auf unsere IT- und Lösungsarchitektur: Microservices und Container, Cloud und DevOps, BigData, IoT und last-but-not-least künstliche Intelligenz.
Legacy Renewal of Central Framework in the EnterpriseAnatole Tresch
Speak done at GeeCon and other Conferences in 2014 showing an experience report of some of the complexities to be faced when changing commonly used frameworks and runtime components in Credit Suisse and how issues were solved finally.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
JSR 354 LJC-Hackday
1. Go for the Money
JSR 354 Hackday
London Java Community 2014
June 2014
Go for the money –JSR 354 Hackday
http://java.net/projects/javamoney
2. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Bio
Anatole Tresch
Consultant, Coach
Credit Suisse
Technical Coordinator &
Architect
Specification Lead JSR 354
Regular Conference Speaker
Driving Java EE Config
Twitter/Google+: @atsticks
atsticks@java.net
anatole.tresch@credit-suisse.com
Java Config Discussion https://groups.google.com/forum/#!forum/java-config
Java Config Blog: http://javaeeconfig.blogspot.ch
Zurich Java Community (Google Community)
Zurich Hackergarten
2
3. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Agenda
3
Introduction
Possible Topics
Easy:
API Challenge: Moneymachine
Medium:
Adding functonalities to the RI,
e.g. Special Roundings
BitCoin and other currencies
Test Financial Formulas in JavaMoney
Hard
Improve FastMoney
Measure CPU and Memory Consumption
Write a Complex Integration Sample
Setup
4. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Introduction
javax.money
4
5. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Currencies
API
5
Allow currencies with arbitrary other currency codes
Register additional Currency Units using an flexible SPI
Fluent API using a Builder (RI only)
(Historic Validity of currencies related to regions/countries and
vice versa (not part of JSR, but javamoney OSS project))
public interface CurrencyUnit{
public String getCurrencyCode();
public int getNumericCode();
public int getDefaultFractionDigits();
}
public final class MonetaryCurrencies{
public CurrencyUnit getCurrency(String currencyCode);
public CurrencyUnit getCurrency(Locale locale);
public boolean isCurrencyAvailable(String currencyCode);
public boolean isCurrencyAvailable(String locale);
}
6. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Currencies (continued)
API Samples
CurrencyUnit currency1 = MonetaryCurrencies.getCurrency("USD");
CurrencyUnit currency2 = MonetaryCurrencies.getCurrency(
Locale.GERMANY);
CurrencyUnit bitcoin = new BuildableCurrencyUnit.Builder("BTC")
.setNumericCode(123456)
.setDefaultFractionDigits(8)
.create();
6
Access a CurrencyUnit
Build a CurrencyUnit (RI only)
Register a CurrencyUnit
CurrencyUnit bitcoin = ….create(true);
7. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Monetary Amounts
General Aspects
7
Amount = Currency + Numeric Value
+ Capabilities
Arithmetic Functions, Comparison
Fluent API
Functional design for extendible functionality
(MonetaryOperator, MonetaryQuery)
8. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Monetary Amounts (continued)
Key Decisions
8
Support Several Numeric Representations (instead of one
single fixed value type)
Define Implementation Recommendations
• Rounding should to be modelled as separate concern
(a MonetaryOperator)
• Ensure Interoperability by the MonetaryAmount
interface
• Precision/scale capabilities should be inherited to its
operational results.
9. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Monetary Amounts (continued)
The API
public interface MonetaryAmount{
public CurrencyUnit getCurrency();
public NumberValue getNumber();
public MonetaryContext getMonetaryContext();
public MonetaryAmount with(MonetaryOperator operator);
public <R> R query(MonetaryQuery<R> query);
public MonetaryAmountFactory<? extends MonetaryAmount> getFactory();
…
public boolean isLessThanOrEqualTo(MonetaryAmount amt);
public boolean isLessThan(MonetaryAmount amt);
public boolean isEqualTo(MonetaryAmount amt);
public int signum();
…
public MonetaryAmount add(MonetaryAmount amount);
public MonetaryAmount subtract(MonetaryAmount amount);
public MonetaryAmount divide(long number);
public MonetaryAmount multiply(Number number);
public MonetaryAmount remainder(double number);
…
public MonetaryAmount stripTrailingZeros();
}
9
10. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Monetary Context
Modeling Amount Capabilities
10
Describes the capabilities of a MonetaryAmount.
Accessible from each MonetaryAmount instance.
Allows querying a feasible implementation type from
MonetaryAmounts.
Contains
common aspects
Max precision, max scale, implementation type
Arbitrary attributes
E.g. RoundingMode, MathContext, …
11. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Monetary Context (continued)
The API
public final class MonetaryContext extends AbstractContext
implements Serializable {
public int getPrecision();
public int getMaxScale();
public Class<? extends MonetaryAmount> getAmountType();
public static final class Builder{…}
}
public abstract class AbstractContext implements Serializable{
…
public <T> T getNamedAttribute(Class<T> type, Object key,
T defaultValue);
public <T> T getNamedAttribute(Class<T> type, Object key);
public <T> T getAttribute(Class<T> type, T defaultValue);
public <T> T getAttribute(Class<T> type);
public Set<Class<?>> getAttributeTypes();
}
11
12. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Creating Monetary Amounts
Monetary Amount Factory
12
Creates new instances of MonetaryAmount.
Declares
The concrete MonetaryAmount implementation type
returned.
The min/max MonetaryContext supported.
Can be configured with a target
CurrencyUnit
A numeric value
MonetaryContext.
13. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Creating Monetary Amounts (continued)
Monetary Amount Factory
public interface MonetaryAmountFactory<T extends MonetaryAmount> {
Class<? extends MonetaryAmount> getAmountType();
MonetaryAmountFactory<T> setCurrency(String currencyCode);
MonetaryAmountFactory<T> setCurrency(CurrencyUnit currency);
MonetaryAmountFactory<T> setNumber(double number);
MonetaryAmountFactory<T> setNumber(long number);
MonetaryAmountFactory<T> setNumber(Number number);
MonetaryAmountFactory<T> setContext(MonetaryContext monetaryContext);
MonetaryAmountFactory<T> setAmount(MonetaryAmount amount);
MonetaryContext getDefaultMonetaryContext();
MonetaryContext getMaximalMonetaryContext();
T create();
}
13
14. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Creating Monetary Amounts
Usage Samples
// Using the default type
MonetaryAmount amount1 = MonetaryAmounts.getAmountFactory()
.setCurrency("USD“)
.setNumber(1234566.15)
.create();
// Using an explicit type
Money amount2 = MonetaryAmounts.getAmountFactory(Money.class)
.setCurrency("USD“)
.setNumber(1234566.15)
.create();
// Query a matching implementation type
MonetaryContext monCtx = new MonetaryContext.Builder()
.setAmountFlavor(
AmountFlavor.PERFORMANT)
.create();
Class<? extends MonetaryAmount> type = MonetaryAmounts.queryAmontType(
monCtx);
MonetaryAmountFactory<?> fact = MonetaryAmounts.queryAmountFactory(
monCtx);
14
15. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Extension Points
MonetaryOperator
Takes an amount and procudes some other amount.
• With different value
• With different currency
• Or both
// @FunctionalInterface
public interface MonetaryOperator {
public MonetaryAmount apply(MonetaryAmount amount);
}
• Operators then can be applied on every MonetaryAmount:
public interface MonetaryAmount{
…
public MonetaryAmount with (MonetaryOperator operator);
…
}
15
16. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Extension Points (continued)
MonetaryOperator: Use Cases
Extend the algorithmic capabilities
• Percentages
• Permil
• Different Minor Units
• Different Major Units
• Rounding
• Currency Conversion
• Financial Calculations
• …
16
17. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Extension Points (continued)
MonetaryOperator Example: Rounding and Percentage
17
// round an amount
MonetaryOperator rounding =
MoneyRoundings.getRounding(
MonetaryCurrencies.getCurrency(“USD”));
Money amount = Money.of(“USD”, 12.345567);
Money rounded = amount.with(rounding); // USD 12.35
// MonetaryFunctions, e.g. calculate 3% of it
Money threePercent = rounded.with(
MonetaryFunctions.getPercent(3));
// USD 0.3705
18. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Extension Points (continued)
MonetaryQuery
A MonetaryQuery takes an amount and procuces an arbitrary
result:
// @FunctionalInterface
public interface MonetaryQuery<T> {
public T queryFrom(MonetaryAmount amount);
}
Queries then can be applied on every MonetaryAmount:
public interface MonetaryAmount {
…
public <T> T query (MonetaryQuary<T> query);
…
}
18
19. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Currency Conversion
javax.money.convert.*
19
20. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Currency Conversion
ExchangeRate
A ExchangeRate models a conversion between two currencies:
• Base CurrencyUnit
• Terminating/target CurrencyUnit
• Provider
• Conversion Factor, where M(term) = M(base) * f
• Additional attributes (ConversionContext)
• Rate chain (composite rates)
Rates may be direct or derived (composite rates)
20
22. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Currency Conversion (continued)
Performing Conversion
Accessing a CurrencyConversion (always targeted to a terminating
CurrencyUnit):
// access from a ExchangeRateProvider
ExchangeRateProvider prov = …;
CurrencyConversion conv = prov.getCurrencyConversion("INR");
// access it directly (using default rate chain)
conv = MonetaryConversions.getConversion("INR");
// access it, using explicit provider chain
conv = MonetaryConversions.getConversion("INR", "ECB", "IMF");
Performing conversion:
MonetaryAmount chfAmount = MonetaryAmounts.of("CHF",10.50);
MonetaryAmount inrAmount = chfAmount.with(conv); // around EUR 8.75
22
23. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Formatting and Parsing
javax.money.format.*
23
24. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Formatting and Parsing
MonetaryAmountFormat
Similar to java.text.DecimalFormat accessible by Locale
Configured by AmountFormatContext
Supports also custom formats (configured an accessed using
AmountFormatContext)
Building AmountFormatContext using a fluent API
Thread safe!
24Go for the money - JSR 354 - http://java.net/projects/javamoney
25. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Formatting and Parsing (continued)
MonetaryAmountFormat: Usage Example
// Access a provided format
MonetaryAmountFormat format = MonetaryFormats.getAmountFormat(
new Locale(“”, “in”));
System.out.println(format.format(
Money.of("INR", 39101112.123456))));
-> INR 3,91,01,112.10
// Access a custom format
MonetaryAmountFormat format = MonetaryFormats.getAmountFormat(
AmountFormatContext.of(“myCustomFormat”));
25Go for the money - JSR 354 - http://java.net/projects/javamoney
26. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
JavaMoney OSS Project
org.javamoney.*
26
27. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
JavaMoney OSS Project
Extended Currency Services
Currency namespaces (e.g. ISO, VIRTUAL, …)
Currency namespace mapping
Validity Services (Historization API)
• access of historic currency data related to regions
Region Services
Region Forest
• Unicode CLDR region tree
• ISO 2-, 3-letter countries
• Custom Trees
Extendible token-based Formatting API
Financial Calculations & Formulas
27
28. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Links
Current Spec (work in progress, comments allowed):
https://docs.google.com/document/d/1FfihURoCYrbkDcSf1W
XM6fHoU3d3tKooMnZLCpmpyV8/edit
GitHub Project (JSR and JavaMoney):
https://github.com/JavaMoney/javamoney
Umbrella Page: http://javamoney.org
JSR 354: http://jcp.org
Java.net Project: http://java.net/projects/javamoney
JUG Chennai Adoption (TrakStok):
https://github.com/jugchennaiadoptjava/TrakStok
Twitter: @jsr354
Cash Rounding: http://en.wikipedia.org/wiki/Swedish_rounding
28
29. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
HackDay - Possible Topics
29
Easy
- Money Machine
Medium
- Extending RI
- RI User Guide
- JavaMoney Lib
- TCK
Hard
- L & P
- Create Sample App
- Implement a RI
30. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – The Easy Way
API Challenge: MoneyMachine
30
Objective: Test the API for usability, make proposals to
improve
How:
Checkout/update the MoneyMachine project from
https://github.com/atsticks/moneymachine.git
Implement the classes in the src/main/java to
make the tests green (skeletons are already there)
The challenge will guide you throughout the whole JSR
Overall 40+ test cases of different complexity (easy to
medium), you may also select only a subset ;-)
Add improvement proposals to the JSRs JIRA on
java.net
Blog your (hopefully positive) experience, twitter, …
31. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – The Easy Way
API Challenge: MoneyMachine Example
31
/**
* This class has to be implemented and helps us giving feedback on the JSR's API. This
* part of the
* project deals with basic aspects such as getting currencies and amounts.
* Created by Anatole on 07.03.14.
*/
public class Basics{
/**
* Get a CurrencyUnit using a currency code.
*
* @param currencyCode the currency code
* @return the corresponding CurrencyUnit instance.
*/
public CurrencyUnit getProvidedCurrency(String currencyCode){
throw new UnsupportedOperationException();
}
/**
* Get a CurrencyUnit using a Locale, modeling a country.
*
* @param locale The country locale.
* @return the corresponding CurrencyUnit instance.
*/
public CurrencyUnit getProvidedCurrency(Locale locale){
throw new UnsupportedOperationException();
}
...
}
Describes
the task to
be done
(incl. Some
hints)
Replace this
with
according
code
32. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – The Easy Way
API Challenge: MoneyMachine Testing
32
To check your
implementation is correct,
simply execute the test suite
Correct ;-)
33. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 - Medium
Extending the Reference Implementation
33
Objective: Extend the RI
How:
Discuss your ideas with me to see where your idea fits
best
Additional Roundings
Additional Currencies
Additional Exchange Rate Providers
Additional Formats
34. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 - Medium
Documenting the Reference Implementation
34
Objective: Document the RI (user guide)
How:
Take a Topic
Write documentation (asciidoc)
35. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – Medium Level
Helping on JavaMoney Library
35
Objective: Help on JavaMoney
How:
Financial calculations in calc need tests
Factor out Dataservice Layer
All Modules require check on JavaDocs, Tests
Enhance APIs with Java 8 features (e.g. 310 types)
Write/enhance user guide (asciidoc)
New functionalities, ideas?
36. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – Medium Level
Help on the TCK
36
Objective: Help finalizing the TCK
How:
Write TCK tests (only a few missing)
Check Test Failure Messages
Check Test Semantics
37. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – Medium Level
Helping on the TCK (continued)
37
/**
* Test successful conversion for possible currency pairs.<br/>
* Hint: you may only check for rate factory, when using a hardcoded
* ExchangeRateProvider, such a provider
* must be also implemented and registered as an SPI.
*/
@Test @SpecAssertion(id = "432-A1", section="4.3.2")
public void testConversion(){
Assert.fail();
}
Describes the test
very briefly
References the according
section in the spec
Add your test code here.
Hint 1: if you are unsure first write a story line
Hint 2: some aspects may require to implement multiple
tests, just ensure the annotations are on all tests
38. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – The Hard Way
Analyze and Improve Performance
38
Objective: Improve Performance
How:
Measure Performance and Memory Consumption
Define corresponding improvement ideas
Implement improvements
Known aspects:
FastMoney implementation could be faster, especially for
division
39. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – The Hard Way
Write an Overall Example Application
39
Objective: Implement a Deployable Example Application
How:
Define Application Storyline
Define Screens etc.
Implement everything needed
Deploy on CloudBees ?
40. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Adoption Areas JSR 354 – The Hard Way
Write an Implementation
40
Objective: Ensure Specification / API Quality
How:
Implement whole or parts of the specification
Check the implementation against the TCK
41. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Setup
41
42. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Setup
42
• Install VirtualBox, if not yet done, download from
https://www.virtualbox.org
• Download the prepared image and start it
• Login with debian/debian
• Open the IDE of your choice (Eclipse, IntelliJ and
Netbeans are preinstalled and setup)
• Update the projects/repositories
• For Contributors:
• Ensure you have a GitHub user account
• Create your own Branch of the corresponding repositories
• Switch your local repositories on your VM, on which you want to commit,
to your branched repos
43. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Q & A
43
44. Go for the money - JSR 354 - http://java.net/projects/javamoney March 2014
Go for it!
44