15.06.07 Java development infrastructure at FMI Pekka Rantala FMI.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Software engineering tools for web development Jim Briggs 1CASE.
Introduction to Maven Michael Youngstrom. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to the Java Stack.
Java Build Tool Comparison HJUG - April 29th, 2009 John Tyler.
Maven: Build and project management in the 21th century.
Source Control in MATLAB A tool for tracking changes in software development projects. Stuart Nelis & Rachel Sheldon.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Jun Peng Stanford University – Department of Civil and Environmental Engineering Nov 17, 2000 DISSERTATION PROPOSAL A Software Framework for Collaborative.
Web Applications Basics. Introduction to Web Web features Clent/Server HTTP HyperText Markup Language URL addresses Web server - a computer program that.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Creating a Hello App Using Google App Engine. What are Google apps? Apps is an abbreviation for application. An app is a piece of software. It can run.
Continuous Integration Demonstration. Agenda 1.Continuous Integration Basics 2.Live Demonstration 3.Bamboo Concepts 4.Advantages 5.Version 2.0 Features.
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
Maven and Stack Starter Michael Youngstrom. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
Lecture 8 – Platform as a Service. Introduction We have discussed the SPI model of Cloud Computing – IaaS – PaaS – SaaS.
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
SOA-14: Continuous Integration in SOA Projects Experience from the field Andreas Gies Principal Architect.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Software Engineering Modern Approaches
CIS 375—Web App Dev II Microsoft’s.NET. 2 Introduction to.NET Steve Ballmer (January 2000): Steve Ballmer "Delivering an Internet-based platform of Next.
SITools Enhanced Use of Laboratory Services and Data Romain Conseil
COLD FUSION Deepak Sethi. What is it…. Cold fusion is a complete web application server mainly used for developing e-business applications. It allows.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Drag and Drop Display and Builder. Timofei B. Bolshakov, Andrey D. Petrov FermiLab.
INFSOM-RI Juelich, 10 June 2008 ETICS - Maven From competition, to collaboration.
National Center for Supercomputing Applications NCSA OPIE Presentation November 2000.
Struts: An Insiders View October Abstract Struts is the de facto standard framework for Java web applications, but where did it come from, and where.
Vision The ultimate IDE/CASE tool should supports all steps in the software development process. Current tools perform only minimal semantic-level analysis.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
Contents 1.Introduction, architecture 2.Live demonstration 3.Extensibility.
1 Schema Registries Steven Hughes, Lou Reich, Dan Crichton NASA 21 October 2015.
Software Quality Assurance
Eclipse. An IDE is an Integrated Development Environment Different IDEs meet different needs BlueJ, DrJava are designed as teaching tools Emphasis is.
© 2002 IBM Corporation Confidential | Date | Other Information, if necessary June, 2011 Made available under the Eclipse Public License v Mobile.
LHCb Software Week November 2003 Gennady Kuznetsov Production Manager Tools (New Architecture)
A New Approach to Java Clients Robert Buffone Chief Architect Nexaweb Technologies By
Eclipse 24-Apr-17.
Version Control CSC 517 John Slankas. Version Control Managing files and directories, and the changes made to them over time. - Adapted from “Version.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February.
NOVA A Networked Object-Based EnVironment for Analysis “Framework Components for Distributed Computing” Pavel Nevski, Sasha Vanyashin, Torre Wenaus US.
Definition (Wikipedia)  What is deployment ? “Software deployment is all of the activities that make a software system available for use.” 1. Install.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
Build Systems Presentation December 14, 2015 Noon-1pm Kathy Lee Simunich Bldg. 203/ D120 Brought to you by: Argonne Java.
APT Configuration Management May 25th, 2004 APT Configuration Management Jesse Doggett.
Jemerson Pedernal IT 2.1 FUNDAMENTALS OF DATABASE APPLICATIONS by PEDERNAL, JEMERSON G. [BS-Computer Science] Palawan State University Computer Network.
Software Deployment & Release 26/03/2015 1EN-ICE.
Nishen Naidoo, Senior Systems Analyst Macquarie University Library Alma APIs using Java, Maven, JAXB and Jersey IGeLU 2015 Developers Day.
Copyright © 2010 Obeo, Made available under the Eclipse Public License v SCA Tools (Helios) Release Review Planned Review Date: June 11, 2010.
8/29/10 Maven Repository Management with Nexus Jim McMahon.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
Interstage BPM v11.2 1Copyright © 2010 FUJITSU LIMITED INTERSTAGE BPM ARCHITECTURE BPMS.
Topics to be covered (ni) Client side validation JSF (free tools as well) Webservices Tell Resources e.g. sites Packaging and deploying web applications.
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
Platform & Maven2 David Šimonek. Certified Engineer Course Agenda What is Maven? Why Maven? NB IDE & Maven NB Platform & Maven.
Software Configuration Management -Subversion- RTLAB YuJin Park.
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Maven 04 March
External Web Services Quick Start Guide
prepared by hasan.we4tech.com
Robert Szuman – Poznań Supercomputing and Networking Center, Poland
AppDB current status and proposed extensions
Subversion Basics Guide
Escidoc build and development environment
The Most Popular Android UI Automation Testing Tool Andrii Voitenko
Presentation transcript:

Java development infrastructure at FMI Pekka Rantala FMI

Components Four Open Source software components: Eclipse IDE for developers Subversion version control (used by developers through Eclipse's Subclipse plugin)‏ Maven 2 for builds (mostly hidden from developers)‏ Plus Maven proxy for querying and caching internet and local repos Continuum for continuous integration building

General architecture

Day-to-day usage: developer 1)Developer commits code into SVN 2)Continuum detects a change in the SVN repo and 3)uses Maven to build the project; as a side effect 4)Maven installs the newly built component in the main FMI component repo, thus making the changed artifact visible for all other projects and webstart apps. The developer only sees the infra via Eclipse: Subclipse is used to access SVN, and Maven is used locally as an “external tool”. Developer receives s from Continuum if (s)he breaks the build (and subsequently another mail when the build is fixed)‏

Motivation: the Great Refactoring A large-ish workstation project (on average five developers, maybe about a thousand java classes) was built as a monolithic Ant build → builds were taking long and were very often broken The project was split up to consist of manageable chunks of code (about forty projects remained)‏ Building 40 projects as separate Ant builds is not feasible Maven-Continuum-Subversion interplay makes it fairly flexible to build components (“artifacts”) independently of each other Nowadays we have a little over 100 projects including “common” reusable components easily incorporable into any in-house project

Benefits Maven strong points: Easy management of dependencies (in-house built libraries and third party libraries)‏ Powerful extension mechanism for inheriting dependencies and other configuration from a project to another Build lifecycle is easily extended by creating one's own plugins (mojos)‏ Various reports (javadocs, source Xrefs etc.) are easily generated automatically

Benefits For the developer ideally, the developer needs not be bothered about a project's build internals; declaring dependencies is usually sufficient Building artifacts continuously and enforcing a “commit early, commit often” policy greatly reduces the risk of components running out of sync with each other

Artifact versioning An artifact is the end product of a build: a library, component, XML file or such. Conventions state that one project should produce one artifact An artifact under development is labeled as a SNAPSHOT and is by definition “unstable” (API is allowed to change at will); SNAPSHOTs are used “at own risk”. 0.7-SNAPSHOT becomes 0.7 during a disciplined release process (other projects may declare their dependencies to which ever version they like). Releases are final; contract determines that a release of an artifact will not change

Releases 1)When release criteria (API documentation, release notes in wiki, Unit tests run,...) is met: 2)Release Manager tells Maven to prepare and perform the release. Maven: 3)checks out all code from SVN, 4)builds the project (running Unit tests), 5)tags it under SVN as a release 6)and upgrades the project's version number. 7)The new release and the new SNAPSHOT are available to other projects via the Maven proxy

FMI utils: Application metadb Stores metadata about FMI-built artifacts (available versions, bindings between FMI Service API components etc.) Metadata is communicated to the DB by way of an FMI-built Maven plugin during build Signs and stores FMI-built SNAPSHOT artifacts during build-time and other artifacts per request (implemented as a Servlet wrapper around Sun's jarsigner utility)‏ Based on the first two points: offers dynamic composition of.jnlp files (Java Webstart) resolving all dependencies and checking the signing status of needed components (for instance the SmartMet II workstation is primarily started via javaws)‏

FMI utils: POMBrowser Resolves projects' dependencies and dependency paths, evaluating formal release readiness. Draws a dependency graph of the current artifact and a dependency element for use in other projects

FMI utils: Repository browser Searches the local Maven repo for FMI projects Composes URLs to Maven built sites, Subversion views, APIs, wiki and the POMBrowser Offers rudimentary quality checks of project settings

FMI utils: Project creator Creates directories, Project Object Model file pom.xml and other skeleton files Imports the new project into SVN Notifies Continuum about a new project

To come: Open sourcing / collaborations It is planned that FMI may open for public access: a part of the Subversion repository similarly, a public Maven repository for FMI built artifacts in the public domain. Common data and metadata handling components are good candidates for open sourcing The tools are in wide use; Open sourcing issues should be easily solved. If the infra (including FMI utils) gathers enough interest, we may feel enough pressure to “productise” and release the utils and documentation publically.

Resources Eclipse: Subversion: Maven: for searching publically available artifactshttp://mvnrepository.com/ Continuum: