How to Enable SSL in Apache Tomcat
Posted on February 22, 2012

If you already have an Apache Tomcat server with SSL Enable then Jump to STEP.

#1. To Enable SSL we will create a keystore file to store the server’s private key and self-signed certificate by executing the following command:

Windows: %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
Unix:$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

and specify a password value of “changeit”.

#2. Uncomment the “SSL HTTP/1.1 Connector” entry in $CATALINA_BASE/conf/server.xml and modify as

<Connector executor=”tomcatThreadPool”
port=”8443″ protocol=”org.apache.coyote.http11.Http11NioProtocol”
connectionTimeout=”20000″
redirectPort=”8443″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”  keystoreFile=”${user.home}/.keystore”
keystorePass=”changeit”
clientAuth=”false” sslProtocol=”TLS”/>

Tomcat can use two different implementations of SSL:

  • the JSSE implementation provided as part of the Java runtime (since 1.4)
  • the APR implementation, which uses the OpenSSL engine by default.

The exact configuration details depend on which implementation is being used. The implementation used by Tomcat is chosen automatically unless it is overridden as described below. If the installation uses APR - i.e. you have installed the Tomcat native library - then it will use the APR SSL implementation, otherwise it will use the Java JSSE implementation. Make sure that you use the correct attributes for the connector you are using. The BIO and NIO connectors use JSSE whereas the APR/native connector uses APR.

#3. After completing these configuration changes, you must restart Tomcat as you normally do. You should be able to access any web application supported by Tomcat via SSL. For example, try: https://localhost:8443

Cross Platform Mobile Development
Posted on January 25, 2012

Mobile development is one of the hottest areas of software development these days. Every website and business wants a mobile app to compliment their web presence which they are fulfilling by taking the assistance from mobile application development companies. There’s tremendous opportunity for growth in the mobile apps industry and we are right in the middle of a booming industry.

Cross platform development may be defined as a concept in computer software development where you write application code once, and it runs on multiple platforms. This is based on the theory of “write once, run everywhere” concept pioneered in the 90s, and brought to a mainstream reality with Flash in the browser, and AIR on the desktop. The standard evolution of technology has been to make everything faster, smaller, and more portable, and it is only natural that this concept has now come into the mobile development world. In mobile scenarios, it is applied by writing an application using codebase & technology that allows the application to be deployed and distributed across multiple disparate platforms/operating systems/devices.

The biggest problem with mobile development is the fragmentation of platforms that exists. In order to hit most of your audience, you must have to deal with iOS and Android development, and depending on your target audience may be Blackberry application development and Windows mobile development as well. This means learning three different programming languages and four mobile SDKs. All this adds up to more development time and higher development costs. Until the platforms can consolidate on a single technology we have to look elsewhere for tools that can help to simplify the dilemma of all these platforms.

Fortunately, there are frameworks available that can help to make the cross-platform problem a bit less of a burden. Some of them are mentioned below:

  • Titanium
  • Sencha
  • jQuery Mobile
  • Phonegap
  • iWebKit
  • JQ Touch

Advantages of Cross Platform Development:

1.    Lower Barrier of Entry: Due to the ease of use of the development tooling and familiarity of the languages, cross platform technologies lower the technical barriers which may have prevented adoption of native development. This enables your team to focus on what matters – the application; not the skills required to develop on multiple disparate platforms.

2.    Reduce the Number of Required Skills for the Development Team: Using cross-platform development technologies, your team only needs to be proficient with one language/skill set. Knowledge of the native development paradigms and languages are always a plus, but are no longer a requirement.

3.    Reduced Development & Long Term Maintenance Costs: Cross-platform mobile applications can originate from a single codebase, which requires a single development skill set. You don’t need to have staff for each individual platform. Instead, resources working on the shared codebase can cover all target platforms. Having a single codebase also reduces long term maintenance costs.

4.    Play the Strengths of a Technology: Some technologies make tasks easier than others.   For example, programmatic drawing and data visualization are very easy using Flex & Action Script. Developing equivalent experiences in native code can be significantly more complex and time consuming. Use the features of the language to their fullest potential, to your advantage- that’s why they exist.

There are other frameworks available similar to both Titanium and PhoneGap; however, another option for cross-platform development is HTML5 application development. An HTML5 web app is built using technologies like HTML, CSS and JavaScript. These apps are accessed through the browser and are not installed through the app store. This can be both positive and negative depending on your goals and how you want to market the app.

Today you will find people who will proclaim that native apps will be dead in the coming years while others say that web apps will never perform as well as a native app can. Regardless of what the future holds, today we are left with this array of disparate platforms that we must support. There is not one best solution that will make this easier for you. The best way is to consider your app requirements, your target audience and how you intend to distributing the app and look at the frameworks available.

Software Performance Engineering
Posted on January 19, 2012

Performance—responsiveness and scalability—is a make-or-break quality for software. Software Performance Engineering companies (SPE) provides a systematic, quantitative approach to constructing software systems that meets the ultimate performance objectives. It prescribes ways to build performance into new systems rather than trying to fix them later.

Software Performance Engineering is a software-oriented approach; it focuses on architecture, design, and implementation choices. Performance Engineering companies uses model predictions to evaluate trade-offs in software functions, hardware size, quality of results, and resource requirements. The models assist developers in controlling resource requirements by enabling them to select architecture and design alternatives with acceptable performance characteristics. The models aid in tracking performance throughout the development process and prevent problems from surfacing late in the life cycle (typically during final testing).

Performance Engineering Objectives:

  • Increase business revenue by ensuring the system can process transactions within the stipulated timeframe
  • Eliminate system failure requiring scrapping and writing off the system development effort due to performance objective failure
  • Eliminate late system deployment due to performance issues
  • Eliminate avoidable system rework due to performance issues
  • Eliminate avoidable system tuning efforts
  • Avoid additional and unnecessary hardware acquisition costs
  • Reduce increased software maintenance costs due to performance problems in production
  • Reduce increased software maintenance costs due to software impacted by ad hoc performance fixes
  • Reduce additional operational overhead for handling system issues due to performance problems

What Does It Cost?

The cost of using SPE to proactively manage software performance depends on the size and complexity of the system under development, the level of performance risk, and the expertise and experience of the development team, as well as other factors. If not meeting your performance goals would endanger the success of your project, you have a performance risk. Factors that increase performance risk include: the use of new technologies, lack of experience in the application area, schedule, market factors, and others.

Conclusion

Performance failures occur when a software product is unable to meet its overall objectives due to inadequate performance. Performance failures negatively impact your bottom line by increasing costs, decreasing revenue or both.

The primary cause of performance failures is a reactive approach to performance during the development process. Cost and schedule pressures encourage project managers to adopt a “fix-it later” approach in which performance is ignored until there is a problem. When a problem is discovered, developers must try to “tune” the software to meet performance objectives if, indeed, they can be met.

The key to preventing performance failures and the resulting project crises is to adopt a proactive approach to performance management that anticipates potential performance problems and includes techniques for identifying and responding to those problems early in the process. With a proactive approach, you avoid the project crises brought about by discovering performance problems late and produce software that meets performance objectives and is delivered on time and within budget.

SCORM, today’s e-learning standard, is a collection of specifications adapted from multiple sources to provide a comprehensive suite of e-learning capabilities that enable interoperability, accessibility, and reusability of Web-based learning content. Organizations adopt SCORM to create efficiencies, lower costs, reduce risk, and increase overall learning effectiveness and return on investment.

SCORM is probably the most important and widely emerging e-learning standard today, whose ultimate goal is ensuring ubiquitous access to the highest quality education and training, tailored to individual needs, and delivered cost-effectively anywhere in the world at anytime.

It is a set of technical standards for e-learning software products. SCORM tells programmers how to write their code so that it can “play well” with other e-learning software. Specifically, SCORM governs how online learning content and Learning Management System (LMS) communicate with each other.

The major benefits of SCORM in E-Learning platform are outlined below:

  • Reusability of content for faster development: Developing content once, then reusing it for multiple audiences and contexts reduces development time.
  • Content sharing between systems: Moving to SCORM makes integration easier between existing and future systems, which protects the infrastructure investments and lowers the cost of ownership.
  • Reduces cost of content maintenance: By enabling the organization to maintain in-house content using any tool regardless of system or content vendor, SCORM lowers the overall cost of content maintenance.
  • Maximum return over technology investments: SCORM content can be launched, operated, and tracked by any SCORM-compliant content delivery system, whether content was developed in-house or by a third party, enabling to get the most mileage from the technology investments.
  • Avoid proprietary authoring tools: The same tools that the development team is using to create Web content can be used to develop SCORM-compliant content, eliminating the need to use or develop proprietary tools.
  • Leverage best practices: Take advantage of the collective knowledge and expertise of the growing SCORM community that is continually evolving and enhancing SCORM functionality, tools, methodologies, and best practices with proven results.
  • Reduced Risk: By design, SCORM reduces business and development risks because it enables content portability, durability and interoperability.
  • Future-proof courseware investments: A key advantage of SCORM-conformant courseware is that no matter who developed it, when they developed it, or for what learning platform, it can be “played” seamlessly on any existing or future SCORM-based delivery system.
  • Improved learner experience: SCORM content and delivery systems enable organizations to create more compelling and effective learning experiences through dynamic sequencing, rich metadata, object-oriented design, and more.
  • Reduce switching cost risk: Investing in standards today helps, in ensuring that any costs associated with switching the e-learning initiatives from one platform to another in future will be minimized.
  • Lower obsolescence risk: Embracing standards also reduce the risk that the tools you are using, the content you are creating and deploying, and the knowledge and skills your people are acquiring will become obsolete. Standards help protect these investments, keeping reengineering, retooling, and retraining costs to a minimum.

 

The internet standards have changed considerably over the last decade. Technology has shifted from Web 1.0 to Web 2.0 and now towards Web 3.0.

While Web 1.0 was very basic in its approach, Web 2.0 worked on a concept called Folksonomy. Today, Web 3.0 works on Me-onomy, meaning relating to the individual or the organization.

Points of Difference Web 2.0 Web 3.0

Meaning

Web 2.0 is wildly read-write web

Web 3.0 is portable personal web

Focus

Focused on communities

Focused on individuals

Applications

Blogs

Lifestream

Content

Sharing content

Consolidating Dynamic content

Formats

XML, RSS

The Semantic Web

Features

Web Applications

Widgets, Drag & Drop Mashups

Concept

Tagging (Folksonomy)

User Behavior (Me-onomy)

Example

Google

NetVibes

Costing

Cost per click

User Engagement

Media

Rich Media, Viral

Advertisement

Attributes

Web 2.0 have attributes such as information sharing, interoperability, user-centered design and collaboration

Web 3.0 have attributes like Deductive Reasoning, Contextual Search, Evolution of 3D web, Personalized search and Tailor made search

Usability

Web 2.0 app may use online knowledge community, which involves people tagging of content and its categorization

Web 3.0 app uses content management systems along with artificial intelligence. These systems are capable of answering your questions because it can think on its own and find the most probable answer to the query. This signifies that web 3.0 can also be termed as “machine to user” standard

Final Thoughts
No matter what the terms or how things are explained, one thing is certain: the future of the Internet and technology is extremely exciting! Things will only continue to evolve into more collaborative and personal ways which is great for everyone on a personal and professional level.

Key Differentiators Native Apps Web Apps

Meaning

Native Applications are specifically designed to run on a device’s operating system and machine firmware

It typically needs to be adapted/adjusted for different devices

Web Applications are those in which all or some parts of the software are downloaded from the web each time it is run

It can usually be accessed from all web-capable mobile devices

Technical Difference

A native application developed for the iPhone will need to run on its proprietary iOS platform or on Symbian for many Nokia devices, and so forth

A web app, however, is typically coded in a browser - rendered language such as HTML combined with JavaScript

Internet Access

Not Required

Required, except for rare apps with offline capability

User Interface

Native apps are responsive and functional

Browsers can be clunky, but new advancements in JavaScript like jQuery Mobile are catching up fast

Installation/Updates

It should be deployed or downloaded

Hit refresh

Device Compatibility

Platform and Hardware dependent

Platform-agnostic, content can be reformatted with CSS to suit any device

Media Streaming

There are few problems with audio and video. Flash works, but only if the device supports it

Browser-based audio and video are getting there, but still there is a compatibility issue. Flash works where supported

Discussion and collaboration

Permits only if you build it, and it’s more difficult if data is disparate

Discussion is easy, as all data is stored on a server

Fonts

Tight control over typefaces, layout

Almost on par, thanks to advancements in web standards. Give it six months

Security

Native apps definitely enjoy an architectural advantage in security, as they do not need to connect with the network as frequently as Web apps

Web apps are less secured as compared to native apps due to their network connectivity

Sharable/Tweetable

Only if you build it in

Web links are shared freely. Social APIs and widgets allow easy one-click posting

Development

Specific tools are required for some platforms (like Apple’s). A new app needs to be built for each target platform

Write once, publish once, and view it anywhere. Multiple tools and libraries are available to choose from

Distribution

Most app stores require approval. And so, long waiting time

No such issues

So far we have been mainly discussing the choice between native and Web apps for mobile devices. Personally I believe Web apps will take on a larger mind share among both publishers and consumers, as hardware complexity grows and the desire for immediacy increasingly dominates modern media consumption behavior.

Liferay Social Office
Posted on December 28, 2011

Liferay Social Office is an enterprise social collaboration solution for document sharing and team collaboration that streamlines communication, saves time, builds group cohesion and raises productivity. It offers team calendaring, blogs, forums, task management, and more. It can be integrated with Microsoft Office, and runs on a combination of MySQL and Tomcat.

Liferay positions the software as a budget alternative to Microsoft’s Sharepoint. Social Office supports SharePoint’s protocols, so that documents can be opened, saved, locked and edited in MS Office.

The various features offered by Liferay Social Office are outlined below:

Document Library: Liferay Social Office acts as a web-based shared drive. It is being used to centralize and organize all the files. Time-saving features are built in, including multiple file uploads and familiar desktop folders. File’s format can also be changed at the time of upload (i.e., .doc to .pdf).

Work from the Desktop: Liferay Social Office allows the user to work from desktop. It features integration with Microsoft Office, which means that when files and documents are uploaded from the local drive, they can be automatically uploaded to the Social Office online.

Team Calendar:This feature allows creating, managing, and searching for group events using the community-based calendar with task lists. Events can be shared across different departments, and event reminders can be set up to alert users of upcoming events by email, IM, or SMS.

Profile: Each user can fill out their own online resume-style profile that can help members discover expertise in the organization. Support project profiles, profile tagging, and personal information.

Wikis: Beyond document sharing, Social Office provides full-featured Wikis to facilitate communal information capture and gathering. Team members can easily start new wiki entries to build up a team’s personal online encyclopedia.

Blogs: This feature facilitates conveying information and conversations around blogs directly. Liferay’s Blogs provide the best features of modern blogging tools and allow keeping up with everyone’s thoughts and activities via dynamic RSS feeds to your email or a “Recent Blogs” display.

Activity Tracking: Activity tracking keeps tabs on personal and team activity and displays this information in various “Recent Activity” viewers for each specific tool, for all items tagged with a certain key word and on a Facebook-style Activity Wall.

Instant Messaging (Chat): Built-in Instant Messaging gives the access to all logged-in team mates. Chat boxes stay at the bottom of the screen as you navigate through Social Office and conversations remain secure behind the firewall.

Sites: Users can create sites which are separate and secured areas in Social Office that can be used for the various departments or teams within your organization. Each Site has its own set of collaboration tools (message boards, blogs), RSS feeds, shared document librarym, and a shared calendar showing the events for the day.

Contacts: This allows users to keep track of people both inside and outside the organization and automatically adds colleagues that share Site membership. Users can email an entire group of Site members all at once.

Related Content: Sites in Social Office automatically display related documents, forum threads, blogs, wiki entries, and users based on the tags found on the content currently being browsed.

Comparison Parameter MS Dynamics Salesforce.Com

Choice of Deployment Model

Microsoft Dynamics CRM offers a hosted, on-premise, or hybrid deployment models. Not locking in their customers gives Microsoft a unique advantage here.

Salesforce does not offer multiple deployment options.

Editions and Pricing

There is only one edition of Microsoft Dynamics CRM Online. The subscription cost is $44 per user per month.

Salesforce is currently available in five different editions, which range in price from $2 per user per month to $250 per user per month.

Browser Support

Microsoft CRM’s full Web client currently only runs under recent versions of Internet Explorer. This is due to the fact that MS CRM relies on the Behavior Property.

Salesforce supports recent versions of Google Chrome, Mozilla Firefox, Microsoft Internet Explorer and Apple Safari. Salesforce publishes a list of supported browser version.

Point & Click Configuration and Customization

In Microsoft CRM, a System Administrator or System Customizer can add new fields to an entity via point and click.

In Salesforce, an administrator can add new fields to an object via point and click.

Email Merge

In Microsoft CRM, email templates can be created by users or administrators.

Emails can be sent to one or more people. Email merge in Microsoft CRM is client side. Emails are sent via a user’s local, Outlook client.

Salesforce allows administrators and users to create email templates.

Email merges are server side - they are processed and sent from Salesforce servers. Salesforce also offers tracking for HTML emails and will track each open by the recipient.

There is a daily mass email limit of 1,000. There is also a per send limit of 250 for the Professional Edition and 500 for the Enterprise Edition.

Data Import Tools

Microsoft CRM’s Import Data Wizard allows for importing data to any Record Type in the database.

Salesforce has a wizard for importing records into the Lead object. It also has a wizard for importing records as Accounts and Contacts as a single operation.

In the Salesforce Enterprise and Unlimited Editions, an application called the Data Loader can be used for importing data into any Salesforce object. The Data Loader has a graphical user interface, but can also be run in command line mode, which supports using relational databases as sources and targets.

Outlook Attachments

This is standard functionality with Microsoft Dynamics CRM and Outlook.

Outlook attachments aren’t captured in Salesforce.

Multiple Profiles

It allows users to have multiple roles. In Microsoft Dynamics CRM, this is standard functionality.

Salesforce.com doesn’t allow multiple profiles. Users must create profiles for every situation.

These are just a few of the comparison points between Salesforce and Microsoft Dynamics CRM. The year 2012 will be an interesting one for observing the online CRM industry. Corporate buyers will ultimately determine the outcome of the Salesforce vs. MS Dynamics competition for CRM market share.

Mobile devices are becoming an essential part of our day to day life whether it is for personal or business use. Mobile phones, wireless PDAs, and specialized wireless devices are being used to read email, perform inventory, get GPS location, and many more applications. As applications are pushed to the mobile environments, there are a number of challenges that need to be addressed. Traditionally, the challenges of mobile devices dealt with issues like size, weight, power, and connectivity. This has not really changed, but is complicated by layering additional requirements like XML Digital Signature on top of an already challenging problem.

The Challenge

Digital signatures provide mobile devices with two main challenges: increased size of data package (transaction) and the need for additional processing. Increased size of the data package ties directly into network connectivity and bandwidth. As the size of data packages decreases the signature becomes a very large part of the overall package and requires more connectivity and time to transmit the data. Digitally signing or verifying digital signatures also places a significant burden on a mobile device. In both operations, the XML data must be normalized using a canonicalization transform and then cryptographically processed. Both of these operations are very computationally intensive and have the potential of injecting enough latency to make the end user experience unacceptable.

Positions

There are several activities underway that are attempting to address issues in the mobile computing environment that have the potential to be impacted by XML Digital Signature in a positive or negative way. If these technologies cannot work successfully with XML Digital Signature then there is a risk that either XML Digital Signature or the other activities themselves will not be adopted. W3C should evaluate mobile initiatives to determine with which activities XML Digital Signature should be harmonized. There are still other technologies that target XML efficiency which should be evaluated for inclusion in the XML Digital Signature specification. Then again maybe the specification as written may not be well suited for mobile environments and other alternatives should be explored.

Harmonization

Two of the initiatives under the W3C are Efficient XML and the W3C Mobile Web Initiative. Efficient XML has been developed to address throughput and performance issues related to the concerns of limited bandwidth and processing power in mobile platforms. The Mobile Web Initiative is aimed at making web browsing more useful for mobile users. Initiatives like these and others may be worthy of harmonization with XML Digital Signature.

Exploration

XML Digital Signature may not be suited for all mobile applications. Canonicalization is very costly with regard to processing power and time. XML digital signatures add size to documents (and packets) and can more than double the size of certain transactions. If XML is to be used securely in these environments then maybe a different solution needs to be sought for these applications or maybe a new approach would be warranted in general.

Conclusion

Mobile devices are a part of everyday life and users expect to be able to perform the same functions securely in mobile environments, as they perform in tethered environments. Consideration of mobile environment requirements when updating the specifications is prudent and should further the acceptance and implementation of specifications like XML Digital Signature.

HTML5 Mobile Application Development
Posted on November 14, 2011

HTML 5 is one of the hottest growing web development platforms. Technology leaders like Apple and Google have been revolutionizing the community at such a pace that market has been flooded with the iPhone/iPad/Android applications. According to many web development professionals and experts, HTML 5 will gain a lot of importance quickly due to the upsurge in demand and requirements of mobile web development. The rising number of mobile websites for businesses are being developed all over the world as companies are considering mobile commerce a remarkable strategy that brings a new era of opportunities.

Why to opt for HTML 5:

HTML5 is revolutionizing the way the internet will look and feel. Programmers and coders will have more control of the pages they are creating, and they won’t need so many plug-ins.

Web browsers are also beginning to support HTML5. Mozilla Firefox, Google Chrome, Apple’s Safari and Opera and four major players in this game.

The main benefit everyone is talking about is the simplicity of HTML5. While XHTML was not adopted by a lot of larger web browsers, HTML5 has promise of streamlining coding language, media, and overall user experience.

Key Benefits:

  • Cleaner, readable and consistent HTML code that is transferable across environments by default
  • Application distribution channels go beyond the different app stores, thereby eliminating the excessive restrictions and undue consumption of time
  • Usability of advanced UI components such as data pickers, sliders, edit boxes that automatically support ellipsis and others
  • To reduce app size and improve its responsiveness, CSS3 styles and CSS3-based animation are used
  • Easy accessibility to rich media types (audio and video) are available before via native code only
  • Support for geo-location services
  • Offline storage capabilities

Drawbacks:
Despite of numerous benefits, it has gaps between native and HTML-based mobile applications:

  • HTML5 standards not fully implemented by the browsers
  • Well made Native apps run faster than HTML5 based web apps
  • Achieving a uniform user experience across devices with different levels of support for HTML5, or devices that lack the resources to efficiently render heavy CSS3 animation
  • Writing rich apps that address user expectations and utilize the wide range of native features that modern devices offer
  • Complying with security standards and regulations around on-device data storage

Path going forward:

Due to the limited browser’s support to HTML5 standards, it is difficult to interpret whether Native application development or HTML5 applications are more efficient. It totally depends on the browsers/market segment targeted for a particular application.