Anything I can find I'll try to blog about it, be it GIS, mapping, programming, graphics, CAD, networking, gadgets, music, both in English and Arabic. Technically everything tech-related and tech-unrelated.
2010-11-21
uDig version 1.2
A project that I've been watching closely and I expect it to become a major player in the GIS FOSS field.
uDig is a programming framework built on the Eclipse Rich Client Platform (RCP) and GeoTools, the Open Source Java GIS Toolkit.
Some time in August they released version 1.2 of uDig, a great release.
2010-01-28
Oracle Sun Acquisition complete
The event talked about many technologies that is affected by the acquisition, like:
Java
- JavaFX is the highlight of presentation layer technologies.
- Will continue to address Desktop (SE), Enterprise (EE) and Mobile (ME) platforms, and will try to converge the APIs between SE and ME and use JavaFX as the common presentation technology.
- GlassFish will join WebLogic as the Application Server platform for Oracle (positioning it for the Developers and the Open Source community while position WebLogic for the enterprise and mission-critical installations)
- GlassFish will continue to be the reference implementation, based on Open Source model, with commercial support for it, parts of it will be ported to WebLogic, most probably it will form the foundation for newer WebLogic releases and powers its Java EE-certified core.
- Web Center will be the strategic Portal solution (against Sun GlassFish Web Space)
- The JRockit JVM will be positioned on the same support level as the reference HotSpot JVM, most probably is that more interactions between the core-JVM and the JRockit in the upcoming years.
- Oracle JDeveloper will continue to become the premier IDE for Oracle and Java Enterprise Applications (for Database and Java EE based Applications, SOA, and ADF-based applications)
- Oracle Pack for Eclipse will continue to be developed to provides integration between Eclipse and Oracle, but no major new offerings (which was expected)
- NetBeans will continue to be an Open Source offering, and stay as very wide covering as it is now (for covering the complete Java portfolio) and support for NetBeans Platform will continue.
- Support for Hudson, Oracle Team Productivity Center, maven, Subversion, BugZilla, and many other ALM tools to be shared among JDeveloper and NetBeans
- The Matisse Visual Forms Editor from NetBeans will be integrated in JDeveloper
- SOA & Application Server Adapters will be shared from JDeveloper to NetBeans
- Continue support and development in Solaris and Unbreakable Linux
- Higher integration between the Oracle Database and Solaris ZFS
- Virtual Box will be continued to be developed and integrated with Oracle VM (to use the same Oracle Virtual Machine template format)
- Solaris Logical Domains (LDom) will become Oracle VM for SPARC and managed through Oracle VM management consoles
- Oracle VM for x86 will add support for Solaris
- Continued support for Solaris Containers and Dynamic Domains (on M Series Servers)
- Next version of Oracle VM will include Virtual Iron technology with better APIs and management console
- Sun VDI Broker will be continued to be development (including Secure Global Desktop)
- Oracle VM Storage Connect and ASM will continue to be used for Storage Virtualization
- Open Storage systems will be used for Storage at the hardware and low-level functions
- Oracle Enterprise Manager (For managing Database, Middleware, and Applications) and Sun Ops Center (for managing Hardware, OS and Virtualization) will be support for the short-term
- Higher connectivity between Enterprise Manager and Ops Center will be developed in the mid-term to allow shared alerts and events, and allow some data to cross applications (12-18 months)
- In the long-term, the Enterprise Manager will consume the functionality of Ops Center and become the unified management console of all the Oracle products
2009-09-24
The history of Apple OS (between Copland and Mac OS X)
An article about the origins of the Mac OS X Cocoa framework and the history of the architecture of the modern attempts of Apple to design a modern and high quality operating system, and the dismissal of the Java-like technology that Apple acquired from NeXT when it bought back Jobs to the heart of Apple.2009-09-02
A great article about JSF 2

I found a great article on the JSF 2 Spec (the View technology of choice for the Java EE 6 stack) and what's new/updated from JSF 1.2.
It serves as an overview to the new features in the JSF 2 and not as a comprehensive review of a single feature, it covers:
- The inclusion of the Facelets technology in the JSF standard and the View Declaration Language
- The composite components (or construct-your-own-component-without-major-hassle)
- New standardized Ajax support and the Ajax request lifecycle management
- The (inspired by Apache MyFaces Trinidad) partial state saving
- New system events
- Improved navigation system
- GET requests improved support and the view parameters
- The (Seam-inspired) additional scopes (View/Flash/Custom Scopes)
- The new (and much awaited) Managed Beans annotations
- New project stage declaration (for separation between production and development stages)
- The new client behaviors
- New bean validation system and the new validators
- Improved error handling
- Resource Loading
The article is available here What’s New in JSF 2 by andyschwartz
2009-07-18
Oracle to Buy Sun, a second look
For some time now, I've been learning parts of the Java Enterprise Edition platform, and what I've seen is a great platform that can be the best-in-class if used properly and if it was easier to learn.
But what I find so much interesting is the multitude of frameworks in the market, two different presentation layer standards (JSP and its successor JSF), many different JSF extension frameworks (Apache MyFaces Tomahawk, Sun Woodstock, ICEfaces, JBoss RichFaces, Apache MyFaces Trinidad, Oracle ADF Faces), other not-in-the-specification frameworks (Tapestry, Struts, Apache Wicket, GWT, Spring MVC and others), many implementations of the JPA standard (the de-facto standard Hibernate, the JPA2 reference implementation EclipseLink, the Oracle TopLink, OpenJPA, and others), many Servlets containers (Tomcat, Jetty and commercial offerings) and various EJB containers, the complete enterprise applications building frameworks as Spring, Seam, and many others.
And that's just for the parts I explored so far.
Also the desktop front suffers from less overlap/duplication with 2 GUI widgets framework (the Java standard Swing, and the IBM/Eclipse influenced SWT framework) and their respective applications framework (the Swing Application Framework and the Eclipse Rich Client Platform).
The same is true in the IDEs front, we just don't have 2 major IDEs (Eclipse and NetBeans), but we have many commercial IDEs built over the Eclipse foundation (many of the IBM Rational offerings, RedHat/JBoss Developer Studio, Embarcadero/Borland JBuilder), some commercial offerings (most notably the IDEA IntelliJ) and the Oracle free (but less fair to play with the market standards) JDeveloper.
At first I just thought that is a waste of brain cycles and time of a talented and very smart community, and not just how many things has been done and redone and then-again redone, it is just plain confusing to try to learn or even design an application while taking in consideration the pros and cons of each framework/standard/application/library and presents a real challenge for a topic that could be easier to penetrate and learn, also such duplication creates many different-and-separated camps of experienced developers in the market.
But then I found that the real reason all these people are still in the Java camp is because of the ability to do things just as you want it (just think of any barely-reasonable way to do enterprise applications and chances are that a framework is out there waiting for you to be used) and the many different ideologies behind each framework (ranging from heavily-closed source and commercial frameworks to BSD-style open source frameworks) and that the ability of the Java community to re-invent the wheel when desired easily a key feature for the backing of virtually all the big software companies in the world (except Microsoft of course, not because it was uninterested, but because it wanted to play it too-hard with the market).
How such community will be affected by the Oracle acquisition is yet to be seen, but I'm not so optimistic as before, the Java EE may grow better under the Oracle umbrella, but it may be less free and less open to the community, which is exactly what the Java EE community doesn't need, the backing of the various software companies and open source communities what makes Java a market leader and the biggest player in the enterprise applications market.
I hope that Oracle understands the chemistry between Java and freedom (or it keeps enough Sun executives to keep such freedom possible) and that only a multiplayer game is a game worth playing.
2009-06-16
JDeveloper and Oracle Java
I've started to use JDeveloper the last few days, and as a Java novice that is drowning in the sea of acronyms and the multitude of implementations in the market of Java Enterprise Edition, I find the JDeveloper as the solution to any Java Developer looking for an Oracle-centric IDE (that is half open and half tightly-coupled with various Oracle flagship applications).
As Oracle will now have the upperhand in the Java world, I assume that going the Oracle way would not bring the best value to the Java EE applications, but would bring the best integration of the various Java technologies.
2009-05-05
Finished my first step in Oracle
2009-04-21
Oracle to Buy Sun

Oracle Buys Sun (from Oracle.com) | Sun and Oracle (from Sun.com)
Earlier yesterday, Oracle has announced that it has reached an agreement to purchase Sun Microsystems for $9.50 per share, making it a $7.4 billion deal, by this acquisition, Oracle will have a complete end-to-end product line that focuses on data and business requirements in the largest enterprises.Oracle has been trying to enter the hardware business lately by its HP Oracle Database Machine, which is essentially a complete rack of HP hardware and Oracle Software, but this last acquisition will bring Oracle completely into the major hardware business, this will give it a complete line of products, from the largest UltraSPARC supercomputers Sun creates and maintains, to its mid-range SPARC servers, , to its Blade servers and high-density computing, to its carrier-grade Netra servers, to storage-oriented servers, to the entry-level x86/x64 servers, down to workstations and thin-clients; not to mention a complete processor architecture and alliances with both the major x64 market players, Intel and AMD.
Oracle will also get a complete software stack to build complete systems using its Oracle software, this includes the Solaris/OpenSolaris operating system, which is (quoted from the Oracle press release) the largest platform Oracle is deployed on, the bleeding-edge ZFS storage engine, the Lustre filesystem which is geared toward clustered supercomputers, and engineering expertise Sun have for building such large-scale installations.
But the crown jewel in this purchase is definitively the Java platfrom, Oracle has been the third-largest contributor to the Java environment (after Java's Own creator Sun, and IBM with its Eclipse/Rational product-line and its WebSphere middleware), Oracle has its Oracle Fusion Middleware product-line which it enhanced by its acquisition to the BEA WebLogic product line, its JDeveloper IDE product, it contribution to the Eclipse Foundation, and its native support for Java inside its core Database product-line.
Oracle will also benefit from Sun earlier acquisition to MySQL, which fosters its position as the major (and mostly the only) player in Linux database business (keeping only the relatively smaller player PostgreSQL) and IBM current offerings, DB2/Informix which focuses more on IBM integrated services/platform than being an active player in the Linux market.
Oracle does have overlapping products with the Sun portfolio, like its GlassFish Application Server (which overlaps with Oracle Application Server and BEA WebLogic), its NetBeans IDE (which doesn't completely overlap, but somehow, with the JDeveloper and the contributions to the Eclipse foundation), its MySQL database product (which is not positioned as a direct competitor to the Oracle database, but none the less it has managed to grab a good market share in the Internet-centric database field), and its open source VirtualBox virtualization software (which overlaps with the Oracle VM product, which is based on Xen).
This is no where the overlap that was to be there if the deal with IBM has managed to succeed, it would give the new IBM overlaps in its complete hardware business (which Sun competes across the complete line), its processor business (the POWER vs. SPARC), its Operating Systems business (Solaris vs. AIX & z/OS), its development tools business (NetBeans vs. Rational/Eclipse), its application server business (GlassFish vs. WebSphere), and its database business (MySQL vs. IBM DB2/Informix); this would leave IBM with just one piece of software it really wants from Sun (beside its server market-share), which is of course the Java platform, and quite frankly, it is not worth the $7.4 billion Sun was asking for (which is the same price Oracle agreed on to complete its acquistion).
I was worried that such a merger/acquisition would make too much mess in the Sun portfolio, but now as Oracle is the new Sun, I'm not so worried; Oracle will benefit directly from the hardware business, the processors business, the Operating Systems business, the Java platform, the office productivity products; and will have minimal impact on the development tools and the virtualization products; the remaining parts where Oracle will probably have a major impact is the database business and the application servers business (which are minor parts in the Sun products line).
We will see how such acquisition will result in the near future, and how the open sourcing of many products of Sun will shape the future of such products.
2008-11-13
Managing the Layout of the Workbench in Eclipse RCP
Setting the layout of the Workbench in any Eclipse RCP application can be a daunting task if your application needs any control over the placement of views and editor area that is not directly exposed through the RCP interface.
But some techniques can be used to provide (relatively) more control over the layout by managing the perspective settings and hinting the view size.
In the class implementing IPerspectiveFactory (the class that implements the Perspective to the org.eclipse.ui.perspective extension point), you can:
Enable or disable the Editor area, if you are to design an Editor, this setting should be kept to true
layout.setEditorAreaVisible(true);
You can also use the Fixed Layout option, this removes he ability o maximize and minimize views and the editor area (through the min/max buttons and through the double clicking on the view title.
This keeps the ability to resize single views (as if they are included in Resize composites, but without the ability to reorder the views, or stack them or minimize them as fast views)
layout.setFixed(true);
The order of the views to be added decides who gets the full layout to take part of it and what views get the remaining of the layout to take further parts of it
Views
Views can be standard views, stand-alone views or fast views:
layout.addStandaloneView(MyOwnView.ID, true, IPageLayout.TOP, 1f, editorArea);
Standard view is a simple view in the Workbench that can be docked, stacked, minimized, maximized or detached inside the Workbench window
layout.addView(SampleView.ID, IPageLayout.LEFT, 0.5f, editorArea);
Fast views are shortcuts to the actual views put in the toolbar at the bottom of the Workbench window and shares the status bar if visible
layout.addFastView(SampleView.ID, IPageLayout.DEFAULT_VIEW_RATIO);
Views and hinting its size (in Eclipse 3.4 and upwards)
By implementing the ISizeProvider Interface in the ViewPart class that is creating the view, you can get the view to set its minimum and maximum size, given that the view doesn't get docked into other views (which can be easily made by using stand-alone views), the simplest implementation would be:
@Override public int computePreferredSize(boolean width,
int availableParallel, int availablePerpendicular, int preferredResult) {
return width ? 100 : 110;
}
@Override public int getSizeFlags(boolean width) {
return (SWT.MIN | SWT.MAX);
}
2008-10-17
uDig 1.1.0 released
2008-09-04
The Eclipse RCP - 3 - Launching configuration
The Eclipse RCP - 2 - Create your first RCP application
- Download the package "Eclipse for RCP/Plug-in Developers" from the webpage of eclipse (www.eclipse.org).
- Extract, and Run.
- In Eclipse select File -> New Project.
- From the list select Plug-In Project.
- Give your RCP plug-in a name, "MyFirstRCP", click Next
- Select "Yes" at the question "Would you like to create a rich client application", click Next
- Select "RCP application with a view", as a template, click Next
- Type the name of the Title Bar in the "Application window title" field, and Select "Add branding", click Finish
The Eclipse RCP - 1 - Rich Client Platform
The Platform
The Eclipse RCP is a platform, where no functionality is implemented in it; its sole purpose is to manage the plug-ins, where everything in the program is done using the plug-ins.
The plug-ins implement everything, from the menu bar, to the status bar, to the main toolbar, to the views (or panels), to the Editors (which may not be editing anything, but they are the main focus of the program), to auxiliary functionality like software automatic update and help and the management of long-running background operations; these plug-ins are the heart-and-soul of any Eclipse RCP-based program.
The basis for this architecture is the runtime environment of Eclipse which is based on the OSGi Alliance. Eclipse used the OSGi reference implementation Equinox to run upon. The Plug-in concept of Eclipse is the same as the bundle concept of OSGi.
As a minimum, a RCP application requires:
- Main program or Application (org.eclipse.core.runtime.applications extension point)
- Workbench Advisor (invoked from the Application handler, it sets the default Perspective, invokes WorkbenchWindowAdvisor which configures the default Main window state and subsequently invokes ActionBarAdvisor, which in turn provides one of the ways to configure the Action Bar or the main menu and Cool Bar or the main toolbar)
- A Perspective (org.eclipse.ui.perspectives extension point)
- A View (org.eclipse.ui.views extension point, views are technically not required for a RCP application, but they are the base interface element)
- org.eclipse.core.runtime
- org.eclipse.ui
The RCP architecture is based on the concept of extension-points, which a plug-in provides so that any other plug-ins can contribute functionality to it in the form of extensions, e.g. you can easily provide your menu items in the Action Bar (an extension point provided by the org.eclipse.ui plug-in) by implementing extensions that connect to the org.eclipse.ui.menus extension point and provide their own implementation. In general an extension point can be used several times (either by the same plug-in or by other plug-ins).
The plug-in architecture is based on 2 configuration files (or manifests) that describe the behavior of the plug-in, "MANIFEST.MF" and "plugin.xml", by double clicking on any of them, Eclipse provides a graphical editor of the files contents.
The plug-in manifest ties all the code and the resources together, the OSGi bundle manifest is stored in "MANIFEST.MF", while the Eclipse specific parts are stored in "plugin.xml".
2008-09-02
The Eclipse RCP Platform
I've started in my quest to learn the Eclipse RCP Platform, the Java Rich Client Platform built on the Eclipse foundation softwareand using the Standard Widget Toolkit (SWT).
While I think that Swing and the Swing Application Framework (JSR 296) would be a more pure Java approach, I personally prefer the Eclipse RCP approach for large scaled projects, where it can provide high degree of modularity to the system (this can be also achieved in the NetBeans Platform, but I prefer the look and feel of the Eclipse-based applications).
Also I think that the NetBeans IDE is better in the more broad Java picture, where I assume it is better in handling the Java EE and Java ME applications and provide a higher of community participation in its code base (this may not be correct, but I got this impression, maybe because I was a close watcher for the NetBeans news earlier than Eclipse).
But the Eclipse RCP won because of its large base of implemented applications, one for example was the main reason that I tried the Eclipse RCP in the first place, uDig, the internet-friendly desktop GIS application, and i don't know until now if I'm gonna to run inside it with my plug-ins, or that I will embed its plugins inside my application(s).
Also the Eclipse SWT library is more responsive and native-looking than Swing (personally I love the Java Metal look and feel, but thats just me, everybody else hates it).
So, in the next few days, I will start posting about my findings in the Eclipse RCP world and the Java world in general.
2008-03-07
Some old Findings
Some of these silly things:
- If anybody tries to convince you that the GIS is another platform you can learn and lightly use it then later forget about it, be warned, it is a really dangerous plot to turn normal people into geography-loving map-making freaks that speak all of the time about the lack and inaccuracy of the publicly available geo-data and about how accurate the data you personally collect and process compared to your government's data.
- I'm a big loser to stay in the Microsoft developers camp for so long (VB 2/3/4/5/6, VB.NET, then C#), I've heard about Java in as early as 96/97, but never tried it before 2 months ago, and it is a great language to learn and a great community to join
- Apple got some of the greatest designers in the tech industry, I just wish I have enough money to be a full-time mac user (or that they become more affordable in foreign countries).
- Adobe is the graphics designer best friend, Thank God Microsoft is failing in its pathetic attempts to take over the graphics market.
- People using AutoCAD should be using AutoCAD 'til the end of their lives, its the best punishment for learning such a bad program from the beginning, it is one of the worst large applications ever (every industry has better solutions for its users, especially in the Architecture, Landscape and GIS industries), I have to switch over to anything else.

