Monday, October 12, 2009
Wednesday, April 8, 2009
Seriously this time, the new language on App Engine: Java™
Today, Google has announce the availability of a new programming language for Google App Engine. Please welcome the Java runtime!
- They live by their powerful tools (Eclipse, Intellij, NetBeans, Ant, etc.).
- They try to avoid lock-in and strive for re-use. Standards-based development (defacto or otherwise) is key.
- They harness sophisticated libraries to perform language feats which are nearly magical (GWT, Guice, CGLIB, AspectJ, etc...).
- They even use alternate languages on the JVM, like Groovy, Scala, and JRuby.
- Access to firewalled data: grant policy-controlled access to your data behind the firewall.
- Cron support: schedule tasks like report generation or DB clean-up at an interval of your choosing.
- Database import: move GBs of data easily into your App Engine app. Matching export capabilities are coming soon, hopefully within a month.
Tuesday, April 7, 2009
A short introduction to SIP (Session Initiation Protocol)
The base SIP specification is defined by IETF rfc3261.
SIP container/Sip Servlet API (SSA).
The Sip Servlet API (SSA) is an extension of the HTTP Servlet Specification. Some important aspects of the SSA :
- For developing SIP enabled applications. Supporting UAC, UAS, Proxy and B2BUA.
- Aligned with HTTP Servlet API for development of converged applications (originating HTTP, sending SIP request, bridging HTTP and SIP Session) spawning multiple protocols and media types.
- Separating the developer and the deployer roles by deployment descriptors
- Several applications may execute on the same incoming or outgoing messages, which allows application composition. Every application processes the message independently from one another.
- Application data can be stored in sessions and application context.
There are two versions of SSA, 1.0 and 1.1:
SSA 1.0 is defined in JSR 116, which have reached final status (released).
SSA 1.1 is defined in JSR 289, which is still on early stage (under development).
The SIP container is under development, towards SSA 1.1 (JSR 289). SSA 1.0 Test Compatibility Kit (TCK) tests towards the SIP container passes with the exception of two failures :
- test_context. This test case, among other, checks that the information in context is Servlet related. But some extra information is stored there by the application server which causes this to fail. This is not a violation of the SSA 1.0 and can be counted as not critical.
- test_proxy_gen2xx. This tests the ability of a proxy to generate its own 2XX responses, to act as an UAS. This functionality is not implemented in current version, but there is ongoing effort to add this.
The Sip Stack
The Sip Servlet implementation requires a Sip stack to control the signaling operations. The Sip Stack is provided by Ericsson Inc, and is currently used for Ericsson IMS products. The Sip Container and Stack were developed at Ericsson R&D sites in Stockholm, Sweden.
Some characteristics of the Sip Stack implementation :
- Lazy Parsing
- Low footprint
- Efficient
Sailfin: Open Source SIP Servlets Technology for GlassFish.
The Sailfin project, adds SIP Servlets technology extension to Glassfish, providing high availability, clustering features and integrating with the existing services. Sailfin is a joint effort, working towards to achieve JSR-289 compatibility and will be the source of all SIP related development for Glassfish.
Monday, April 6, 2009
How Did Cloud Computing Start?
Cloud computing began as large-scale Internet service providers such as Google, Amazon, and others built out their infrastructure. Architecture emerged: massively scaled, horizontally distributed system resources, abstracted as virtual IT services and managed as continuously configured, pooled resources. This architectural model was immortalized by George Gilder in his October 2006 Wired magazine article titled “The Information Factories.” The server farms Gilder wrote about were architecturally similar to grid computing, but where grids are used for loosely coupled, technical computing applications, this new cloud model was being applied to Internet services.
Both clouds and grids are built to scale horizontally very efficiently. Both are built to withstand failures of individual elements or nodes. Both are charged on a per-use basis. But while grids typically process batch jobs, with a defined start and end point, cloud services can be continuous. What’s more, clouds expand the types of resources available — file storage, databases, and Web services — and extend the applicability to Web and enterprise applications.
At the same time, the concept of utility computing became a focus of IT design and operations. As Nick Carr observed in his book The Big Switch, computing services infrastructure was beginning to parallel the development of electricity as a utility. Wouldn’t it be great if you could purchase compute resources, on demand, only paying for what you need, when you need it?
For end users, cloud computing means there are no hardware acquisition costs, no software licenses or upgrades to manage, no new employees or consultants to hire, no facilities to lease, no capital costs of any kind — and no hidden costs. Just a metered, per-use rate or a fixed subscription fee. Use only what you want, pay only for what you use.
Cloud computing actually takes the utility model to the next level. It’s a new and evolved form of utility computing in which many different types of resources (hardware, software, storage, communications, and so on) can be combined and recombined on the fly into the specific capabilities or services customers require. From CPU cycles for HPC projects to storage capacity for enterprise-grade backups to complete IDEs for software development, cloud computing can deliver virtually any IT capability, in real time. Under the circumstances it is easy to see that a broad range of organizations and individuals would like to purchase “computing” as a service, and those firms already building hyperscale distributed data centers would inevitably choose to begin offering this infrastructure as a service.
Friday, February 27, 2009
Friday, February 20, 2009
Zend Announces Beta of Zend Server, Includes Java Capability
The interesting thing is that even the free community edition now includes their Java capability, previously only available to high-end customers. They feel this will enable a lot more in the Java community to experiment with PHP and gain some of the benefits of dynamic scripting languages like PHP, in conjunction with running Java code they may have already built and have running in production.
Zend Server is designed to be an all-in-one installer to get setup quickly with Apache, PHP, Zend Framework, and a PHP optimizer (opcode cache, very much a necessity with dynamic languages like PHP). It also comes with an admin UI to configure PHP easily. It uses native installers for various operating systems, and is available for Windows, Mac OS X (the CE edition), and Linux (.deb, .rpm or tarball).
There are two versions being released. The full Zend Server (which after Beta will be a commercial product, price to be announced), and Zend Server CE, which is a version completely free to use however you wish. The full Zend Server comes with the following additional features:
* Page Caching (based on URLs, no code changes necessary)
* Monitoring (email alerts on slow DB queries, broken code executions, etc.)
* Support & Hot Fixes (so PHP is always up-to-date)
If you are interested in trying out Zend Server for yourself, check out some of the following links:
* Learn more about Zend Server. http://www.zend.com/en/products/server/
* Download Zend Server (either edition) to try out in beta. http://www.zend.com/en/products/server/downloads-all
Tuesday, January 27, 2009
A rare opportunity for you to meet James Gosling @ Sun Tech Days 09.
| |
|
Monday, January 26, 2009
A new PHP IDE rolls into town - NetBeans
Was shocked the other day to hear that someone was using a certain IDE for PHP development. That IDE being Netbeans. If you haven’t ever used NetBeans it is an IDE project child of SUN and use to just be for Java development.
Looks like on the latest version (6.5) you get a whole slew of extra languages to develop in! Check out all the features of NetBeans 6.5 here. Now NetBeans supports (for Dynamic Languages) PHP, Ruby, JavaScript, Groovy, and Python. It also has support for many of the well know AJAX frameworks out there like my personal favorite jQuery. Oh it also has great HTML support.
This IDE has the makings of something great, it’s free, it supports the syntax of many languages. However is it better than the former PHP champ Zend IDE 5.5 (standalone)? Let’s compare the two.
Supported Languages: Zend has compatibility for PHP and HTML, and that is really it. It handles JavaScript ok, at least it’s useful for finding out whether or not I screwed up some brackets while using jQuery.
NetBeans on the other hand can handle a whole slew of languages from Java to C++ to many web-development languages. Netbeans +3.
Syntax Strictness: NetBeans could be stricter on the way it handles the PHP syntax. One thing I always really liked about Zend was when I tried typing a function name and I didn’t write the function yet or didn’t have it included into the file that the IDE gave me a bunch of shit about it. This helps you make sure you don’t have to wait until you debug it to figure you might have spelt it wrong or didn’t include it.
On the flip side NetBeans will throw the penalty flag if your HTML tags are out of order (ex:
FTP: One of Zend’s main drawing points for me was it’s awesome FTP support. You could set up a bunch of FTP accounts and be working off multiple servers, transferring files, the whole works. It was incredibly sweet.
NetBeans has FTP support, but you set it up for that project, which works just fine. However sometimes I would use Zend as a FTP program so I didn’t have to boot up FileZilla. Zends was just more robust, Zend +1.
Code Completion: Where would we be today without code completion? Honestly it can save you so much time. Zend would code complete everything everything automatically, it was simple and effective. It didn’t get in the way because they did it right.
NetBeans will code complete automatically on variables, but normally nothing else unless you pull a ctrl+space (at least on linux). I was really turned off by this when I started using it, but over the course of a week I realized how often I didn’t even need code completion. You’d be surprised how often you just don’t even think about it and type it out. I mean I know if I’m going to be typing mysql_fetch_array, I just type mysql and hit ctrl+space. I think this is really a horse a piece, and shouldn’t put my own preference into play. Tie NetBeans +1, Zend +1.
Debugging: Before I started using Zend I was using NuSphere PHP on Windows, which is very good, but pricey. Anyways, NuSphere’s debugging was awesome, Zends - well I never could get it to work at all from Linux. It never really bugged me too much because I’m so use to not using a debugger to debug, I know that sounds weird but I can do it.
NetBeans got the debugger working under Linux no problem, probably because when I tried to debug it told me where to go to set it up. Love it, I can debug just like I use to be able to do with the NuSphere IDE. NetBeans +1.
I could go on for a while but, NeBeans is the winner pretty hands down, it does much more better than Zend. Sure there’s a couple things here or there, but I had been using Zend for at least 6 months so some of that is a little personal bias.
There’s many neat extra features in NetBeans 6.5 but I’ll leave those to you to discover, just check it out. You don’t have to download everything, you can just download the PHP part, so if your using Ubuntu Linux (like me) don’t use apt-get (or aptitude) to get it as they may still have and older version in the repository, and it doesn’t come how you want it - just php.
Happy coding.