Abdelmonaim Remani

The Art of Metaprogramming in Java

A software developer and technology enthusiast at heart and by profession. Particularly interested in technology evangelism and enterprise software development and architecture. Experienced in Java Enterprise Applications and a wide range of related technologies. President and Founder of a number of organizations namely The NorCal Java User Group, The Silicon Valley Dart Meetup, and The Silicon Valley Spring User Group. Abdel is a frequent speaker at a number of developer conferences including JavaOne, JAX Conf, and OsCon, and many user groups and community events.

Website

about.me/PolymathicCoder

Twitter

@PolymathicCoder


Sessions

How RESTful Is Your REST?

Friday 10.00 - 10.50 in: Gangnam Style

The rise of Mobile and the diversity its technologies make exposing a RESTfull API the most crucial capability of any application and the key to its success. In the absence of widely adopted best practices and well-defined conventions, designing such an API is nothing but trivial. This presentation introduces the fundamentals of REST architecture, and discusses the principles of RESTfull design. Among the topics covered: resource modeling (URI design, and HTTP verbs/status code canonical usage), multiple representation support, testing, cache control, security (Http and OAuth), and API versioning. HATEOAS and REST maturity model are also discussed, along with an implementation of a sample API in JAX-RS and Spring MVC. No prior knowledge REST is required.

Outline:
* What is REST?
* Resource Modeling
- URI Design
- HTTP verbs and CRUD operation
- HTTP response status code and error handeling
* Multiple representation of data and Media types
- JSON vs XML
- Usage of query strings (Filtering, exclusion/inclusion list, etc...)
* Why REST?
* Richardson's REST Maturity Model
* HATEOAS
* Advanced
- Caching
- Security (HTTP Basic/Digest, SSL, OAuth)
*Testing RESTfull APIs
*JAX-RX
- Jersey
- RESTEasy
- Code Example
* Test the REST
* Conclusion
* Q & A

Tags: Architecture Back end Java

Quantum Leap: Being a Designer in the Year 2038

Thursday 11.10 - 12.00 in: Nyan Cat

What will it be like to be a designer in the future? No need to wait until the year 2038. In this session we will explore projections of future technologies like genetics, nanotechnology, neuroscience and biology to gain insights on how to start acting today to design for people with the help of science. By the end of the session we will have gained immediately applicable and practical methods to architect experiences and design user interfaces that speak to your users' brain(s). With the explosion of devices, screen sizes, form factors and input mechanisms, designing a user experience requires a radically different, more architectural approach that can better enable the creative team - designers and developers - to breakthrough from the confines of pixels and instead free us up to think in terms of flow and user emotions. Learning from science, this session will share some of the exploration and thinking that designers are going through today to define methods and practices that enable the creation of device and screen size agnostic user experiences.

Tags: Creative UX

The Art of Metaprogramming in Java

Wednesday 14.10 - 15.00 in: Honey Badger

Metaprogramming is the dirty little secret behind the success of many Java frameworks such as Spring and Struts2, and forms the backbone of many of the most fundamental APIs across the JEE technology stack. This session aims to introduce the topic and highlight, with code examples, the different mechanisms and techniques to take advantage of this underused feature of the Java Programming Language. This session will adopt a learn-by-example approach that combines the philosophy and theory behind metaprogramming with concrete code examples. No previous knowledge or exposure to the topic is required, but an intermediate understanding of Java SE is expected.

Outline:

I. Introduction
What is Metaprogramming?
Metadata Formats?
Benefit?
Example: (Spring, etc…)
II. Metaprgamming In Java
Java Annotations – JSR 175
Annotation Processing
Compile time:
Pluggable Annotation Processing API (JSR 269)
Runtime:
Java Reflection API
Libraries: Reflections, FEST-Reflect, etc…
Byte Code manipulation
ASM, CGLib, and Javassist
Project Averroes
III. Best Practices and Design Patterns
A step-by-step code example
The metadata
Metadata processing
Constructing a metamodel
Making sense of the metamodel

Tags: Fun Hands on Java