Transcript Open Source
®
IBM Software Group
IBM Open Source Software Competition
Mark Wallace, Software Architect, IBM Dublin Software Lab
IBM Software Group | WebSphere software
Agenda
Open Source
Eclipse
New Developments
Summary
Questions
IBM Software Group | WebSphere software
Free Software versus Open Source
Free software is a matter of liberty not price. You should think of
“free” as in “free speech”, not as in “free beer”. (http://www.fsf.org/)
Perceived drawbacks to Free Software
Confusion as to it’s definition
•
•
Googling for free software returns many different things
http://www.fsf.org/licensing/essays/free-sw.html
Licensing
•
“Copy left” requirement
Lack of quality
•
•
•
Unknown pedigree
Scalability, serviceability, reliability, localization, …
Largely unfounded
Not attractive to commercial enterprises
“Open source is a development methodology; free software is a social movement”
IBM Software Group | WebSphere software
What is Open Source
Open Source Initiative (OSI) maintains a formal
definition of Open Source Software (OSS) recognized
by the open source community.
OSI has a web site at: http://www.opensource.org
Open Source Definition current criteria (paraphrased):
Free Redistribution
Source Code
Derivative Works
Integrity of The Author's Source Code
No Discrimination
No Discrimination Against Fields of Endeavor
Distribution of License
License Must Not Be Specific to a Product
License Must Not Restrict Other Software
License Must Be Technology Neutral
The basic idea behind open source
is very simple: When programmers
can read, redistribute, and modify
the source code for a piece of
software, the software evolves.
People improve it, people adapt it,
people fix bugs. And this can
happen at a speed that, if one is
used to the slow pace of
conventional software
development, seems astonishing.
IBM Software Group | WebSphere software
Open Source Development Methodology
Virtual community of programmers, leveraging the Internet for
communication, who create / debug / maintain / evolve a source
code base
OSS projects often self-organizing:
Someone determines a need and communicates that need to others
on the Internet
If the project generates interest, one or more programmers begin
writing code
Someone takes a leadership role and begins to map out a project
road map
Interested programmers join the project to contribute new code or
fine-tune existing code
A network of participants, linked via the Internet, forms
Tiered participation levels emerge
IBM Software Group | WebSphere software
IBM and Open Source
IBM has contributed many projects to the open source community
Eclipse Project: http://www.eclipse.org
•
Project dedicated to providing a robust, full-featured, commercialquality, industry platform for the development of highly integrated
tools
Apache Derby: http://db.apache.org/derby
•
Database management system developed by the Apache Software
Foundation
Linux Technology Center (LTC): http://www.ibm.com/linux
•
Work towards Enterprise enablement of the Linux OS through the
development and contribution of technology, utilities, tools and
code
Other contributions
IBM Pledges 500 U.S. Patents To Open Source In Support Of
Innovation And Open Standards
IBM Software Group | WebSphere software
IBM and Open Source
IBM uses open source in its products
Building products on top of open source projects e.g. Rational
Application Developer
Apache webserver to support and bundle with its WebSphere suite
IBM promotes open source development
Externally
•
•
AlphaWorks: http://alphaworks.ibm.com
DeveloperWorks: http://www130.ibm.com/developerworks/opensource
Internally
•
Using open source intranet site to promote software
componentization and reuse
IBM Software Group | WebSphere software
Agenda
IBM and Open Source
Eclipse
New Developments
Summary
Questions
IBM Software Group | WebSphere software
Java Tooling
From www.eclipse.org . . .
“Eclipse is an open source community whose
projects are focused on providing an extensible
development platform and application frameworks for
building software.”
Put more simply . . .
Eclipse is an Open Source Java IDE
And so much more . . . .
Multiple languages (Java, C++, COBOL)
Debugger
Unit Testing
Modelling with UML
Visual Editing of Java UI
Java Web Tools (JSP, EJB, XML . . . .)
All through an extensible plugin-based IDE
IBM Software Group | WebSphere software
Eclipse Project Aims
Provide open platform for application development tools
Run on a wide range of operating systems
•
•
Windows, Linux, AIX, MacOS X, etc.
GUI and non-GUI components
Language-neutral
Able to handle different content types
Java, HTML, C/C++, JSP, EJB, XML, GIF, etc.
Facilitate seamless tool integration
At UI and lower level
Add new tools easily
Attract community of tool developers
Including independent software vendors (ISVs)
Capitalize on popularity of Java for writing tools
IBM Software Group | WebSphere software
Why develop plugins that extend Eclipse ?
Infrastructure
You get a workbench created for free – just add what you need
No need to create an environment from scratch
Build on Eclipse Modelling Framework (EMF) for model support
Build on Graphical Editing Framework (GEF) for graphics support
Interoperability
Use any of the existing tools in your ‘end-product’
•
•
Java Editor, outliner . . .
Explorer, Text editor, search . . . etc.
Examples
Java (or any language) code analysis/transformation plugins
Any UML related tooling (using EMF)
Any Java graphical projects (using GEF)
IBM Software Group | WebSphere software
Java Perspective
Java-centric view of files in Java projects
Java elements meaningful for Java programmers
Java
project
package
class
field
method
Java
editor
IBM Software Group | WebSphere software
Java Editor
Lots of useful features such as . . . .
Method completion in Java editor
List of plausible methods
Doc for method
IBM Software Group | WebSphere software
Top 10 Tips for Eclipse Users
Use Code Assist
Just press the code assist key combination (by default ctrl-space) and
the IDE will either fill in where you’ve started typing or display a menu.
Navigate Through Code By ctrl-Clicking
You can move to a field, method, or class by holding down the ctrl key
and clicking on the identifier you’re interested in.
Quickly Open Classes and Resources by Name
To open a Java class, press ctrl-shift-T. This will display a dialog box
that allows you to type in a class name.
Set the Heap Size
Eclipse is a large, complex, Java-based IDE. It needs lots of memory
to perform well.
eclipse -vmargs –Xmx1024M
IBM Software Group | WebSphere software
Top 10 Tips for Eclipse Users
Configure Eclipse To Use a JDK, not a JRE
Go to Window -> Preference -> Java -> Installed JREs
Use a JDK that supports hot code replace (IBM J9 or JDK 1.4.1+)
Use the Eclipse’s Refactoring Support and Code Generation
Eclipse also has extensive support for code generation.
Use Multiple Workspaces Effectively
A workspace is a container of projects that has its own set of
preferences and metadata.
eclipse –data c:\myworkspace –showlocation
Use Templates
Open a Java class in an editor, type in “sysout” and press ctrl-space.
Set Type Filters
If you’re seeing classes show up at the top of your search you know
you’re not interested in, filter them out for faster searching.
IBM Software Group | WebSphere software
Top 10 Tips for Eclipse Users
Know the Keyboard Shortcuts
ctrl-shift-o: organize imports
ctrl-shift-F4: closes all open editor windows
ctrl-o: outline popup – very useful for quickly jumping to a method in a
large class
f4: shows the hierarchy viewer for a class (ctrl-T shows similar data in
a popup version)
ctrl-m: toggle maximize of the current editor or view
ctrl-F11: run the last launched configuration
IBM Software Group | WebSphere software
Agenda
IBM and Open Source
Eclipse
New Developments
Summary
Questions
IBM Software Group | WebSphere software
New Projects
AJAX
OpenAjax – http://www.openajax.org
DOJO – http://www.dojotoolkit.org
Apache MyFaces – http://myfaces.apache.org
Eclipse ATF (Ajax Toolkit Framework)
Groovy
CodeHaus – http://groovy.codehaus.org
Grails – http://www.grails.codehaus.org
Project Zero – http://www.projectzero.org
IBM Software Group | WebSphere software
New Projects
Mozilla
XULRunner - UI “embedded browser” used widely –
http://developer.mozilla.org/en/docs/XULRunner
Asterisk
Digium - http://www.asterisk.org
Asterisk Now - http://www.asterisknow.org
IBM Software Group | WebSphere software
Agenda
IBM and Open Source
Eclipse
New Developments
Summary
Questions
IBM Software Group | WebSphere software
IBM Open Source Software Competition
The competition is based on fourth year CS projects in each university
An IBM Mentor who is a senior software architect from Dublin Software Lab
has been assigned to each university
To be eligible for participation there must be a minimum of five qualifying
projects
At the end of the academic year, the mentor will evaluate the projects based
on the level of Open Source content and on the overall project results and
will select a short list of projects which will in turn be evaluated by a panel at
the Software Lab
Individual projects, not joint projects, will be evaluated
The student with the best project will win a high spec IBM Think Pad
IBM Software Group | WebSphere software
Resources
Articles, tutorials, presentations on Eclipse RCP
http://www.eclipse.org/rcp
IBM : Web Services general information
http://www-128.ibm.com/developerworks/webservices
Developerworks
http://www-128.ibm.com/developerworks
AlphaWorks
http://www.alphaworks.ibm.com/
Redbooks
http://www.redbooks.ibm.com/
IBM Dublin Center for Advanced Studies
http://www.ibm.com/ibm/cas/sites/dublin/
Academic Initiative:
http://www.developer.ibm.com/university/scholars/
IBM Software Group | WebSphere software
IBM Academic Initiative
IBM Software Group | WebSphere software
Developer Works
IBM Software Group | WebSphere software
Agenda
IBM and Open Source
Eclipse
New Developments
Summary
Questions
IBM Software Group | WebSphere software
Questions