Altabel Group's Blog

Archive for the ‘Open Source’ Category

Introducing ASP.NET Core:

ASP.NET Core is a new open-source and cross-platform framework for building modern cloud based internet connected applications, such as web apps, IoT apps and mobile backends. ASP.NET Core apps can run on .NET Core or on the full .NET Framework. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET Core apps cross-platform on Windows, Mac and Linux. ASP.NET Core is open source at GitHub.

The framework is a complete rewrite that unites the previously separate ASP.NET MVC and Web API into a single programming model.

Despite being a new framework, built on a new web stack, it does have a high degree of concept compatibility with ASP.NET MVC.

ASP.NET Platform exists for more than 15 years. In addition, at the time of System.Web creation it contained a large amount of code to support backward compatibility with classic ASP. During this time, the platform has accumulated a sufficient amount of code that is simply no longer needed and is deprecated. Microsoft faced a difficult choice: to abandon backward compatibility, or to announce a new platform. They chose the second option. At the same time, they would have to abandon the existing runtime. Microsoft has always been a company focused on creation and launch on Windows. ASP.NET was no exception. Now the situation has changed: Azure and Linux occupied an important place in the company’s strategy.

The ASP.NET Core is poised to replace ASP.NET in its current form. So should you switch to ASP.NET Core now?

ASP.NET Core is not just a new version. It is a completely new platform, the change of epochs. Switching to ASP.NET Core can bring many benefits: compact code, better performance and scalability. But what price will be paid in return, how much code will have to be rewritten?

.NET Core contains many components, which we are used to deal with. Forget System.Web, Web Forms, Transaction Scope, WPF, Win Forms. They no longer exist. For simple ASP.NET MVC-applications changes will be minor and the migration will be simple. For more complex applications, which use a great number of .NET Framework classes and ASP.NET pipeline situation is more complicated. Something may work and something may not. Some part of the code will have to be rewritten from scratch. Additional problems may be caused by WebApi, because ASP.NET MVC subsystems and WebAPI are now combined. Many libraries and nuget-packages are not ready yet. So, some applications simply will not have a chance to migrate until new versions of the libraries appear.

I think we are waiting for the situation similar to the transition from Web Forms to ASP.NET MVC. ASP.NET Framework will be supported for a long time. First, only a small amount of applications will be developed on ASP.NET Core. Their number will increase, but sooner or later everyone will want to move to ASP.NET Core. We still have many applications running on the Web Forms. However, no one comes to mind to develop a new application on the Web Forms now, everybody chooses MVC. Soon the same happens to ASP.NET Framework, and ASP.NET Core. ASP.NET Core offers more opportunities to meet modern design standards.

The following characteristics best define .NET Core:

  • Flexible deployment: Can be included in your app or installed side-by-side user- or machine-wide.
  • Cross-platform: Runs on Windows, macOS and Linux; can be ported to other OSes (Operating Systems). The supported OSes, CPUs and application scenarios will grow over time, provided by Microsoft, other companies, and individuals.Command-line tools: All product scenarios can be exercised at the command-line.
  • Compatible: .NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard Library.
  • Open source: The .NET Core platform is open source, using MIT and Apache 2 licenses. Documentation is licensed under CC-BY. .NET Core is a .NET Foundation project.
  • Supported by Microsoft: .NET Core is supported by Microsoft, per .NET Core Support.

The Bad:

  • As for the “cons” one of the biggest issues are gaps in the documentation. Fortunately most of the things for creating and API are covered, but when you’re building an MVC app, you might have problems.
  • Next problem – changes. Even if you find a solution to your problem, it could have been written for a previous version and might not work in the current one. Thanks to open source nature of it, there is also support available on github. But you get same problems there (apart from searching).
  • Another thing is lack of support in the tooling. You can forget about NCrunch or R# Test Runner. Both companies say they will get to it when it gets more stable.
  • ASP.NET Core is still too raw. Many basic things, such as the Data Access, is not designed for 100%. There is no guarantee that the code you are using now will work in the release version.

The Good:

  • It’s modular. You can add and remove features as you need them by managing NuGet packages.
  • It’s also much easier and straightforward to set up.
  • WebApi is now part of the MVC, so you can have class UserController, which will return a view, but also provide a JSON API.
  • It’s cross-platform.
  • It’s open-source.

ASP.NET Core is the work on the bugs of the classic ASP.NET MVC, the ability to start with a clean slate. In addition, Microsoft also aims to become as popular as Ruby and NodeJS among younger developers.
NodeJS and ASP.NET have always been rivals: both – a platform for backend. But in fact, between them, of course, there was no struggle. The new generation of developers, the so-called hipster developers, prefer Ruby and Node. The adult generation, people from the corporate environment, are on the side of .NET and Java. .NET Core is clearly trying to be more youthful, fashionable and popular. So, in future we can expect the .NET Core and NodeJS to be in opposition.

In its advertising campaign, Microsoft is betting on unusual positions for it: high performance, scalability, cross-platform. Do you think that ASP.NET “crawls” on the territory of NodeJS? Please feel free to share your thoughts with us.

Thank you in advance!

Ref: MICHAL DYMEL – DEVBLOG

 

Darya Bertosh

Darya Bertosh

Business Development Manager

E-mail: darya.bertosh@altabel.com
Skype: darya.bertosh
LI Profile: Darya Bertosh

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

Java brings a lot of popular and user-friendly frameworks, content management systems and servers that help to simplify the application development process, website management process and much more irrespective of the size and complexity of the project. When it comes to CMS, Java possesses a host of CMSs that have been highly recognized in the market, but one CMS that has gained great popularity and attention from the developers and companies across the world is Magnolia.

Magnolia is an open source content management system which delivers exceptional simplicity on an enterprise level, combining user-friendly usage with a standards-based and flexible Java architecture. Companies such as Airbus Group, Al Arabiya, Avis and Virgin America use it as the central hub for their web, mobile and IoT initiatives. Founded in 1997, Magnolia is a privately-held company headquartered in Basel, Switzerland. The company has offices around the globe, and customers in over 100 countries.

Making a good CMS to cater the needs of the clients is never an easy task, and the developers Magnolia knows this thing better. Hence, Magnolia brings some of the much needed features and functionalities for the enterprises.

• Magnolia comes with a smart cache, a built-in clustering capabiliy and distributed deployment architecture that easily decouples authoring from publishing and the possibility to develop load-balanced public servers to bring more throughput and availability.
• It also offer code highlighting for the designers & developers, easy integration of 3rd party frameworks, extendable workflow, J2EE compliance, RSS generation & aggregation and more for the customization.
• When it comes to designing, it brings standard-based templating in JSP and servlets, unlimited page and component design, Freemarker as a template engine, custom tag library to speed up templating and pluggable templating engine for the designers.
• It brings Open APIs, advanced caching strategies, unlimited scalability, clustering & load balancing, transactional activation and tons of other performance related features & functionalities for the enterprises.
• From the security point of view, Magnolia brings flexible user permissions using role-based user management and distributed architecture, which is a need of today’s enterprises.
• It also enables team work through concurrent editing, deletion, address book, workgroup collaboration and some other features.
Apart from all these, Magnolia also enables search engine optimization, content tagging, configurable workflow, content versioning, social media integration, multilingual support, multi-site management, mobile publishing and tons of other enterprise-scale functionalities.

magnolia

However, like any other technology or platform, Magnolia also has some advantages and disadvantages. Let’s take a look at each of them:

The Pros
• It’s an open source.
• User friendly, easy to use for Administrators/Content Editors/Authors
• Good set of standard components in the standard templating kit (STK)
• Very flexible, almost anything can be customized
• Vast set of open modules for many additional features
• Leverage from page-based site or navigation.
• It utilizes installer, but the WAR files can be used to redeploy it to some other place.

The Cons
• Steep learning curve
• Inconsistent or lack of documentation
• Configuration via JCR-Tree can be error-prone and not very transparent
• Versions -4.5, 4.5+ and 5 all have shifts in paradigms
• Versioning and collaboration

All in all, Magnolia is a very promising CMS that integrates well into an enterprise java stack. It is predominantly suited for medium to large businesses where processes need deep integration and customizations. With regards to small businesses, Magnolia might be somewhat of an overkill.

How about you? Did you have a chance to work with Magnolia CMS? What is your attitude to it?

Please feel free to share with us your thoughts and experience here below.

 

Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

E-mail: Kate.Kviatkovskaya@altabel.com
Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

The Go Programming Language (Go) is an open-source programming language sponsored by Google and created by Robert Griesemer, Rob Pike, and Ken Thompson that makes it easy to build simple, reliable, and efficient software.

Go has gained popularity since it was first announced in 2009, and it’s now being used by many companies worldwide and for a variety of applications; Dropbox, Google, SoundCloud,  CloudFlare,  Docker and Cloud Foundry are some of the Go programming users.

go

Like any technology, though, it has its adherents and critics. Here are some key benefits and perceived drawbacks of the language as told by experts familiar with it.

Pros:

  • It is fast. And not only fast in the sense that programs written in it run fast when compared to other common languages; but also fast in the sense that its compiler can compile projects in the blink of an eye. You can even edit and run Go programs directly on the Web.
  • It is a garbage-collected language. This puts less pressure on the developer to do memory management, as the language itself takes care of most of the grunt work needed.
  • It has built-in concurrency, which allows parallelism in an easier way than is possible in other languages. Go has the concept of goroutines to start concurrent work and the concept of channels to permit both communication and synchronization.
  • Go has documentation as a standard feature. That makes it easier for developers to document their code and generate human-readable data out of source code comments.
  • Go has a rich standard library which covers a lot of areas. In fact, Go is probably the only language that can claim to have a fully working Web server as part of its standard library.
  • Go’s built-in build system is both elegant and simple. No need to mess with build configurations or makefiles.

Cons:

  • Go is still a very young language and has a very young ecosystem. This means there aren’t many libraries for it yet, leaving developers to write libraries themselves. There is also a shortage of books and online courses on the language.
  • Go is simple to the point of being superficial. Go’s simplicity is mostly superficial, and in its effort to find simplicity, it threw away decades of valuable programming language progress.
  • Although Go is a high-level language, it still has low-level features such as pointer-arithmetic which does not rule out the chance of doing systems and OS programming.
  • Go’s tooling is really weird, on the surface it has some really nice tools, but a lot of them, when you start using them, quickly show their limitations.
  • It is still not so easy to learn Go and it’s difficult to handle errors in it.

What is your attitude to Go? Is it worth learning? What do you think are Go’s advantages and disadvantages? Can you tell us about a real use you have given to this programming language? Please, feel free to share your thoughts here below.

 

Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

E-mail: Kate.Kviatkovskaya@altabel.com
Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

Sitecore’s CMS flexibility, scalability and security make it an enterprise favorite, powering more than 32,000 websites around the world from financial powerhouses like American Express to some of the largest international sporting tournaments like Barclays ATP World Tour Finals. Let’s try to find out why Sitecore is so popular nowadays especially among companies which have got high traffic sites.

What is Sitecore and why it is a choice for so many companies and businesses?

From the start, Sitecore’s architecture is able to meet every unique business need with speed, flexibility and dependability. The large variety of organizations are using Sitecore’s CMS solutions – companies (more than 3,000 of the world’s leading brands such as Experian, Toshiba, Canon, Nestlé, American Express, Carnival Cruise Lines, easyJet, Heineken, and Microsoft), schools, and government agencies all over the world in every vertical sector are leveraging from Sitecore CMS to create business advantage and online success.

Sitecore is one of the leading enterprise-level content management systems built on ASP.NET, enabling web content editors and marketers to have full control over all aspects of their website from social integration and blog posts to advanced personalization, e-commerce and more. Launched in 2001, Sitecore has used the .NET platform from the beginning of the language itself, and has been growing in popularity over the last few years. Nowadays Sitecore is a quite popular CMS in the U.S.A. and Western Europe.

Sitecore CMS brings the power of personalization and conversation management right in the hands of your marketers and business users. The CMS incorporates a powerful desktop interface that is controlled by a fully-customizable role-based system. This desktop is very similar in look and feel to a Windows desktop, which makes it easy for users new to Sitecore to pick up and learn the system. Developers will find Sitecore’s powerful technology platform and open API architecture provides them the flexibility and scalability they need.

10 main reasons why companies should use Sitecore CMS

Some of the top features of Sitecore CMS include solutions that offer better insight to website user behavior as well as tools to increase site visitors:

1) Insight to Website Traffic Conversion;

2) Targeted Content Based on User Behavior;

3) Repurpose Content for Different Devices;

4) Easily Integrate with Third Party Tools;

5) Improved Search Engine Optimization (SEO);

6) Fast Integration with Microsoft Technology;

7) Highly Scalable;

8) Intuitive and User-Friendly Design;

9) Optimize Web Experience with Multivariate Testing;

10) Web 2.0 and Social Media Integration.

.NET-based CMSs: Sitecore, SharePoint, Umbraco – how to choose the right one for your business?

Comparing Sitecore and SharePoint

Firstly, let’s look at SharePoint and Sitecore, as it is often asked about the possibility of using Sitecore for an intranet or SharePoint for a public-facing website. While the idea of using one technology solution to solve both problems sounds promising, there are many things you should consider before limiting yourself.

Here are some thoughts in which cases you should choose Sitecore CMS for your projects and in when it is better to stick to SharePoint (these points are based on experts’ views as well as on Altabel’s own experience):

  • it is better to use Sitecore for a platform to customize the web user experience based on non-authenticated users;
  • choose Sitecore for a marketing driven platform;
  • for an external content focus, choose Sitecore;
  • choose SharePoint for an IT driven platform;
  • it makes sense to choose SharePoint for a collaboration platform;
  • for an internal content focus with enterprise level security requirements,  choose SharePoint.

Following the beaten path, many companies continue using SharePoint for creating public facing sites – they are well familiar with it and have already invested a lot of time, money, and knowledge in SharePoint. But actually it should be kept in mind that SharePoint was not developed for such sites so it’s worth adopting another CMS to develop them. There are some advantages Sitecore offers over SharePoint as a CMS for a public facing website:

  • Sitecore allows high flexibility for content editors and a logical hierarchical structure;
  • SharePoint is very limited to List Viewsfor content entry;
  • Sitecore’s Web Forms for Marketers makes building forms and triggering goals simple;
  • Frontend development for SharePoint is restricted and requires a lot of customized work, Sitecore on the other hand, is free of restrictions and able to do anything you want;
  • Sitecore offers fantastic technical support;
  • Sitecore offers easy multilingual configuration;
  • A/B testing is included with Sitecore, a must for a modern website. SharePoint does not come with any kind of A/B testing;
  • Sitecore’s DMS (Digital Marketing Suite) – SharePoint has nothing like this. Any website that has marketing in mind can greatly benefit from this tool included with Sitecore;
  • Sitecore is developer-friendly – Development in Sitecore is much easier and requires a lot less specific knowledge. More developers are able to produce a better solution, faster, cheaper;
  • Sitecore has a clear line between data and presentation making content easier to manage.

The bottom line is simple: If you’re looking to build a public internet site on the Microsoft platform, SharePoint makes sense if you meet a certain set of criteria.  But Sitecore provides an extremely compelling alternative that, from a business owner’s perspective, offers superior tools for engaging with the customer.

Comparing Sitecore and Umbraco

Sitecore CMS and Umbraco CMS are two leading content management systems based upon Microsoft’s ASP.NET framework. Their flexibility, functionality, integration capabilities and ease of use is why many have chosen to focus their technical expertise on these systems.

Let’s have a look at the similarities between Sitecore CMS and Umbraco CMS:

  • Easy integration with Microsoft Office;
  • Endless expansion possibilities;
  • Easy-to use User Interfaces (UI);
  • Design layouts are separated from the content;
  • Due to the large open-source Umbraco community and the expert development teams within the Sitecore network both CMS platforms are constantly evolving at a rapid pace;
  • Easily scalable and customizable through modules (Sitecore) or packages (Umbraco);
  • Can be integrated with your internal systems like ERP and CRM;
  • Comprehensive documentation and online help & guidance.

And now let’s get acquainted with the differences between these two CMS:

– Sitecore is an enterprise solution whereas Umbraco is suited to small-medium sized businesses;

– Sitecore is a license-based product. This means a license fee is paid to acquire it. Licensing options can be chosen, taking in consideration a number of factors, making it possible to use Sitecore in a variety of projects: from small non-profits, with websites running on a single server, to big corporations with millions of visits per day;

– Umbraco is an open-source product, meaning there is no license fee;

– In both North America and Europe, you can easily find an existing Sitecore customer. This is very helpful to further increase adoption as it means that new customers have some experience they can tap into. In addition, Sitecore has many government references where Umbraco has almost none;

– Sitecore 7.1/7.2 has advanced feature set;

– Sitecore is an established global player; much more so than Umbraco. Sitecore is in particular strong in the important and highly competitive US and UK markets.

Our opinion is that if you do a proper CMS vendor evaluation, you will probably find that the license cost is only a fraction of the overall project costs. Your criteria should really be to look at which system will meet your requirements most efficiently.

Conclusion

If you are looking for a .NET-based CMS, all these products will work – but right now, at Altabel we would lean toward Sitecore when looking for a pure CMS that provides fast development time, stable platform and ease of use for non-technical content creators.

Of course, each organization is different, and it makes sense to check out the products and run them through your technology selection process to determine which is best for you.

Hope you have found the article interesting and helpful for you.

Also it would be nice to hear your opinion and practical experience. What CMSs do you use and for what kind of projects? What is your favorite CMS and why?

Thank you for your attention and looking forward to your comments.

 

mk

Marina Karabanova
Marina.Karabanova@altabel.com
Skype ID: m.karabanova
Business Development Manager (LI page)
Altabel Group – Professional Software Development

 

The IT sector is flourishing. If you’ve used a computer for at least a couple of times in the last few years, you’ve probably noticed this. I’ve noticed it myself even more after a business trip to Stockholm where I was lucky to attend some conferences and learnt more about Swedish IT industry tendencies. These tendencies reflect our life in general. Life changes rapidly with new technologies bursting into it. And when it comes to programming languages, we get a chance to see very different trendy styles. Programming languages which were popular some years ago are not useful today. And no one can exactly predict which programming language will be popular in future. That’s why a programmer who wants to stay in developer fields has to adopt the right programming language from time to time.

As the Swedish software maker Erik Starck pointed out, “programming is about managing complexities”. And it’s really so. An understanding of at least one programming language makes an impressive addition to any CV nowadays.

It is also very difficult to get the exact number of users for any programming language. Many of us use multiple programming languages. The more experience you have, the more programming languages you use. The more programs you write or work with, the chances of using more languages rise. The larger the company, the more languages you’re likely to use.

There are a number of ways to measure the popularity of a programming language, for example, based on the number of: 1) new applications written in the language; 2) existing applications written in the language; 3) developers that use the language primarily; 4) developers that use the language ever; 5) web searches; 6) available jobs that require skills in the language; 7) developers’ favorites, etc.

My survey attempts to rank which programming languages are most popular in Sweden, each using a different measure. So, they are the following:

1) Python

Python is an object-oriented programming language which allows developers to work quickly while integrating their systems more efficiently and effectively. Designed by Guido van Rossum in 1991, Python is one of the most easy to use programming languages.

Python is characterized by its use of indentation for readability, and its encouragement for elegant code by making developers do similar things in similar ways.

Top Employers: Amazon, Dell, Google, eBay, Instagram, Yahoo

2) Java

Java is a class-based, object-oriented programming language founded by Sun Microsystems in 1995. Java is one of the most in-demand programming languages today for many reasons. First of all, it is a well-organized language with a strong library of reusable software components. Secondly, programs written in Java can run on many different computer architectures and operating systems because of the use of the JVM (Java virtual machine).

Top Employers: Amazon, Deloitte, Sun, eBay, Symantec Corporation, Cisco Systems, Samsung

3) C++

C++ is a compiled, multi-paradigm language written as an update to C in 1979 by Bjarne Stroustrup.

Due to its high-level compatibility and object-orientation, C++ is used for developing a wide-range of applications and games which makes it a popular and sought after programming language by the employers.

Top Employers: Intel, the Math Works, Microsoft, Qualcomm, Amazon, Mozilla, Adobe, Volvo

4) Ruby

Ruby is an open source, dynamic programming language designed by Yukihiro Matsumoto in 1995 with a key focus on productivity and simplicity .It is one of the most object-oriented languages in the world.

Ruby is a mix of elegant syntax which is easy to read and write and hence it has attracted many organizations and developers.

Top Employers: Spokes, VMware, Accenture, Cap Gemini, Siemens, BBC, NASA

5) JavaScript

JavaScript is an object-oriented scripting language founded in 1995 by Netscape.

Being a client-side language, it runs in the web browser on the client-side with a simplified set of commands, easier code and no need for compilation.  JavaScript is simple to learn and it is used in millions of web pages to authenticate forms, detect browsers and improve design.

Top Employers: Microsoft, Sales Force, IBM, Yahoo, Dell

6) C#

C# is a compiled, object-oriented language developed by Microsoft.

It is highly used on Windows platform and labelled as the premium language for Microsoft .NET framework. C# is known for strong typing, procedural and functional programming discipline which is the reason it has acquired so much popularity.

Top Employers: Microsoft, HP, Digi-Key Corporation, Allscripts, Intel

Those are the top 6 programming languages which are in great demand among Swedish developers.

And one more thing: remember that opinions are like noses, everyone has one and they all smell 😉 If you disagree, please feel free to email me or write your own opinions in the comments.

 

Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

E-mail: Kate.Kviatkovskaya@altabel.com
Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

Today comparing software on a market is a difficult task. Each product comes from a market / technology niche with great specific features developed by passionate people and open source lovers. There is no doubt the most appropriate CMS will depend on what one is trying to use it for, but let us try to have sort of a general comparison and see what definitely should be on our Java CMS shortlist.

There are so many Open Source Java CMS but let me focus on some of them which are considered quite popular now and they are Hippo, Magnolia and Jahia.

Hippo

Hippo contains an optimal combination of enterprise architecture capabilities, fast development possibilities and values of open integration. It enables you to gain the power to be open for integration with any technology that you require to manage, optimize and create high-impact customer experiences.

This CMS is really about managing content for multi-channel publication: web, mobile, social, print, etc. Separation of content from presentation is the cornerstone of the product.

Speaking of analytics systems like Webtrends, Omniture and Google Analytics Hippo CMS makes it possible for you easily embed tracking codes into content to feed analytics systems. You can also observe your content effectiveness, as Hippo exposes data collected by analytics systems in the CMS.

In terms of ecommerce, Hippo has been integrated with many custom eCommerce solutions. Take ATG, Konakart, Magento and IBM WebSphere Commerce as example. Due to the open interfaces of all Hippo components, it works whatever eCommerce system you chose.

Hippo format neutral way of managing content makes it a great source for publishing into portals. So, if your extranet or intranet runs in a portal environment, then it is not necessary to rebuild it with Hippo if you want to increase it with centrally managed content. Hippo plays nicely with all major portals and has been integrated with portals like Liferay, JBoss, SAP and Websphere Portal.

Hippo Pros:
• flexible content structure & faceted navigation
• integration with some external applications
• portal alike functionalities/ integrations
• a lot of sub-sites with sharing content capabilities

Magnolia

Magnolia powers the websites of government as well as leading Fortune 500 enterprises in more than 100 countries on all continents of the world. It is a leading CMS favored for its ease of use and license. The page editing interface enables authors to lay out content exactly as it would appear to the Web site visitor.

Magnolia is similar to Hippo in lots of ways, except that it’s very much focused on managing smaller, “single” websites. Magnolia CMS is not a framework to build web applications, however can be used to manage data. You can for instance manage products and use them as content for web pages.

Authors no longer need to switch between different navigation mechanisms to make a small change, but they can instantly edit any page in their browser.

Magnolia’s inline-editing feature ensures that editors see content paragraphs in their right context at all times, reducing the switching between working modes.

Magnolia has been designed for heavy-load enterprise websites, having a low memory footprint, a smart cache, built-in clustering capabilities, a distributed deployment architecture that decouples authoring from publishing and the possibility to build load-balanced public servers to provide more throughput and availability.

Magnolia Pros:
• good for smaller sites (content related); although, Magnolia can be used on quite big sites as well
• need in page editing/inline editing (this is possible within Hippo CMS but Magnolia is bit easier to setup)
• you only have page(content) based site/navigation. Hippo solution is much more flexible in this regard.

Jahia

Jahia delivers web content integration software by combining enterprise web content management with document and portal management features. Jahia is content centric depending on the type of project you envision, this is a major difference. The granularity of Jahia’s content model offers a deeper control on each content item. This provides greater benefit when it comes to repurposing, reusing content or controlling precisely how your content should behave (roles, workflow, layout, display options, etc.). Of course, these advantages need to be balanced with the specific objectives or your project. For a basic website scenario, this granularity is perhaps not necessary and Magnolia may be an easier choice. For intranet or portal scenarios, complex websites or content based applications, the Jahia model and its widely recognized flexibility may be more appropriate.

Jahia works great with structured content. For instance, Jahia offers options beyond the unique paragraph concept – more suited to create unstructured objects that must be displayed in a page, it offers a variety of additional objects with multiple properties you can manipulate, sort, validate, repurpose, etc. You can obviously decide to only use a simple, unstructured approach in Jahia but the ability to really declare, control and manipulate a wide range of additional object types is very powerful in more complex scenarios. Also important is that all Jahia editing UIs are auto-generated based on simple content definitions: not having to create your own input masks is a huge time saver and cuts development time.

Jahia embeds several frameworks that are very important if you plan to manipulate your content through API and code, and if you want your Jahia instance to interact with other apps / systems, some of the most important ones are) Jboss Drools, Apache Camel, jBPM.

Caching mechanisms in Jahia is based on long experience fine tuning performance for large and high traffic websites: there is a sophisticated and efficient caching solution that deals with both automatic invalidation and expiration. This allows avoiding dependencies and flushing management problems, which is key to complex, large and/or interactive sites scenarios.

Jahia Pros:
• deep control on each content item due to granularity of Jahia’s content model
• good for working with structured content
• good for large and high traffic websites

The CMSs under review have their differences but also have something in common. It might be interesting to note that all three products actually use the same storage technology: Apache Jackrabbit, which is the reference implementation of the Java Content Repository API. This ensures some guarantee as to the possibility to migrate in/out the content relatively easily.

You are welcome to make Java CMS shortlist of your choice longer with other products as well as to share your comments and comparative analysis details on the given ones. It would be really great to learn more on this subject as well as get to know your experience.

Thank you!

Aliona Kavalevich

Aliona Kavalevich
Aliona.Kavalevich@altabel.com
Skype ID: aliona_kavalevich
Business Development Manager (LI page)
Altabel Group – Professional Software Development

Debates about which programming language is the best are always hard and heated. Likewise, there’s no ideal language that works for all web application project requirements. Wikipedia is written in PHP. Gmail is written in Java. Python is number one choice of Google and YouTube. Ruby is used to create Twitter and Hulu. Slashdot is written in Perl. Stackoverflow is written in C#.

Browsing for the best web programming languages, among dynamic ones, you’ll mostly see PHP, Python and Ruby listed. Back in the days several years ago PHP was admitted the best tool for web job but since then both Python and Ruby have matured and grown robust libraries and frameworks around them that make them better candidates for many web projects now.

Today many consider PHP to be great for average everyday web systems. Python and Ruby are thought to be more suitable than PHP for most web applications in general and for more advanced things in particular. Just like PHP, they are free, open source, run on an open source stack (Apache and Nginx / linux, windows and BSD), and play well with any database engine. However, Ruby and Python have better syntax and they both enforce good programming habits by their nature, especially Python. PHP encourages sloppy spaghetti code by its nature. Also, the object oriented features in PHP are very ugly because of its arcane, retarded syntax.

Let’s get deeper insights into these two web programming languages from various standpoints:

As mentioned before, Python and Ruby are two of the most popular dynamic programming languages used in high level application development. In fact, Ruby was built using some of the design elements from Python. Developers often prototype using these two languages before implementing on compiled languages because of their modularity and object oriented features. Many use Python or Ruby instead of Perl as simple scripting languages. Python and Ruby are popular among web developers as well because of their rapid development cycle, with Python boasting computation efficiencies and Ruby boasting code design.

a/ Philosophy
Python really believes that code readability is the most important thing. Hence, there is one-true way of writing code, or as it has been reformulated lately: “There’s a most understandable way to do something and that is how it should be done”. Python is designed to strongly emphasize programmer productivity and it likes things to be structured, consistent, and simple. Python syntax enforces strict indentation rules; in fact, indentation has semantic meaning in Python.
Ruby believes in giving programmer the flexibility, freedom and power. It was designed, first and foremost, to make programming fun for its creator, with guiding concepts as follow: “The Principle of Least Surprise” and “There’s more than one way to do the same thing”. The latter philosophy principle inherited from Perl is the reason why many Ruby methods have alternate names, which may lead to some API confusion among new practitioners. However, this flexibility enables Ruby to be used as a meta language for describing DSL. Also Ruby provides a better way to write concise and compact code. More into the expressiveness of the code and writing code that is clever.
Python people like libraries to be transparent and obvious how they work and hence is easier to learn, while Ruby people tend to provide clean and pretty interfaces with “magic” behind the scenes. This makes development very fast when you understand the magic, but frustrating when you don’t.

b/ Ease of Use
Python is known for its ease of use. It allows beginners to start building powerful sites more quickly, and has the power to grow in complexity keeping its ease of comprehension. For example, one of the hardest parts of coding is going back to what you coded long ago and trying to remember the logic of it. Because Python uses natural language with white spaces and indenting, it is much more clear and easier to read than languages like Ruby. That makes it easier to fix mistakes or do updates. Also, there are literally thousands of pre-built modules that can be snapped on to let you get up and running on the web immediately. Its intuitive introduction to object-oriented coding concepts, such as communities, modules, and libraries, allows you to move on to other related programming languages as they develop.

c/ Object Oriented Programming
Both Python and Ruby support object oriented programming. Still Ruby’s object orientation is considered to be more ‘pure’ in that all functions exist inside a class of some sort. Python’s object orientation is more akin to that of C++, which allows functions and statements that exist outside of classes. In Ruby, even global variables are actually embedded within the ObjectSpace object. Python doesn’t have global variables, instead using attributes of module objects. In Python and Ruby, an instance of literally any type is an object. However, where in Ruby all functions and most operators are in fact methods of an object, in Python functions are first-class objects themselves.

d/ Syntax
Ruby includes several syntactic features which make dynamic extension of and higher-order interaction with external (library) code more straightforward. In particular these are blocks and mix-ins. Most things implementable with block and mix-in syntax are also achievable in Python, they are simply less syntactically natural and clear, and so less commonly form the centerpiece of major libraries or common styles of programming. These features, combined with a lighter-weight syntax with fewer restrictions (whitespace flexibility, optional parentheses, etc), make Ruby more suitable to pervasive and relatively transparent use of metaprogramming.
At the same time, while this flexibility and the Ruby community’s tendency to use it for metaprogramming can facilitate aesthetically pleasing code, they can also create stylistic variation in how the language is used, and obscure the mechanisms by which code actually works. Python’s more restrictive syntax is intentionally designed to steer developers towards one canonical “pythonic” style to improve accessibility and comprehension.

e/ Style
Ruby code is organized into blocks, with blocks starting with various constructs and ending with the keyword “end”. Python code is indentation-sensitive, with successively larger indentation meaning tighter (nested) scopes. Python’s syntax has been described as executable pseudocode.

f/ Functional Programming
Both languages support some functional programming constructs, but Ruby is arguably better suited to a functional programming style. Lambdas in Python are generally very short, because lambdas in Python are restricted to expressions and cannot contain statements. Ruby’s lambda support is far more flexible, allowing for lambda expressions of arbitrary length.

g/ Speed
The standard CPython implementation is generally regarded as executing code slightly faster than Ruby.If speed is really an issue for a Python project, you also have the option to use Cython, Pyrex,Pypy (JIT) or the ShedSkin tools to compile your code into C or C++.

j/ Features
Both Python and Ruby are high level application development languages. Each of them is estimated to have a Capers Jones language level of at least 15. Both languages promote test driven development.
Both languages have full Unicode support, although the way that support is implemented varies. Python distinguishes between “Unicode strings” and “byte-strings”. Ruby, on the other hand, treats all strings as byte-strings with a semi-hidden flag which causes problems when dealing with badly-encoded data from third-party sources.
Both Python and Ruby support multithreading. Python has the Global Interpreter Lock (GIL), which negates much of the potential advantage of using threads; Ruby has a comparable Global VM Lock (GVL).
There are a number of functions that are available by default in Ruby but for which in Python it is necessary to import a module from the standard library. Python supports generators and generator expressions.

k/ Community
There are great communities behind both frameworks. Some people believe that Python has a more developed community in terms of libraries suited for data analysis, machine learning, natural language processing, scientific libraries. As for community folks, Python ones are believed to be conservative and afraid of change, while Ruby guys welcome changes and love new shiny stuff even if it breaks older things. Consequently, Python world is more stable, and you can update your installation without much troubles, but that also means new technology is only added very slowly.

l/ Frameworks
There are a number of Web frameworks based on both Ruby and Python. The most notable and leading are Ruby on Rails (Ruby) and Django (Python) based on MVC. Django is more declarative, with it you’ll have a clearer understanding of what’s actually going on. It lets you specify most configuration details yourself. Django creates a much simpler project structure. On the other hand, the centerpiece of Rails’s philosophy is called convention over configuration. Rails provides you with more defaults.

m/ Popularity
Python is generally more widely used than Ruby, according to most measures, but in the wake of the rising popularity of the Ruby on Rails Web application development framework Ruby’s popularity too has seen rapid growth.
Python is more mature general purpose nature vs Ruby’s more niche (Rails) usage. Python is stronger and sees use in automating system administration and software development, web application development, data manipulation, analyzing scientific data (with help of numpy, scipy, and matplotlib modules), biostatistics, and teaching introductory computer science and programming. Ruby+Rails holds a slight edge over Python+Django for web development and sees use in general programming, and has more mindshare.
In terms of cloud deployment, Python can run on Google-Cloud (Google-App engine). Though Ruby has very strong cloud deployment options in the shape of Heroku and Engine Yard.

Would you prefer Python or Ruby over PHP for implementation of your web project? And is it indeed a philosophy that you chose while selecting between Python and Ruby? Interested to hear your thoughts.

Helen Boyarchuk

Helen Boyarchuk
Helen.Boyarchuk@altabel.com
Skype ID: helen_boyarchuk
Business Development Manager (LI page)
Altabel Group – Professional Software Development

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

%d bloggers like this: