Android is the most widely used operating system on mobile devices. Huge device variety, high customisation and less restrictive app policies are just a few advantages of Android over other mobile platforms.
Historically we started developing mobile applications a decade ago using Java to develop platform-native applications, whilst also experimenting with some universal, multi-platform tools. However, we soon concluded that to deliver highly stable, flexible and customizable mobile applications, native platform development was the way to go.
Ruby on Rails
Ruby is an object-oriented language which focuses on simplicity, productivity and developer happiness. Ruby on Rails takes advantage of these to provide an easy to use MVC framework that can help to build your web applications as fast as possible. It provides everything you need with a large ecosystem that you can rely on. It helps you quickly build your prototype and start your online business as soon as possible. It is successfully used by many start-ups and large companies like Basecamp, GitHub, Shopify and Airbnb. It inspired many frameworks written in other languages like Laravel in PHP.
P92 has more than 5 years of experience working on Ruby and Ruby on Rails projects and in that time have completed many applications for customers as well as for our own corporate usage. It can be used flexibly, to build either a full website or for REST API only.
Java started life as a programming language and platform for interactive television in the early ‘90s and quickly became a de facto standard in general purpose enterprise application development. The main principles were to create a simple OOP language similar to C/C++, a robust platform using machine independent bytecode and implicit memory management to make it secure and easy to use.
Java is everywhere. Being a strongly typed object-oriented programming language, promising Write-Once-Run-Anywhere, you can find applications and software components written in Java in IoT and mobile, on desktop, in browsers, on the server side and even in the cloud.
Both the language and the Java Runtime are constantly evolving by implementing new programming elements and technologies to keep the platform on the top of the software development industry. However, the real value of this platform is in its ecosystem and the waste numbers of available libraries, from the low-level operations (IO and thread management) to high level complex solutions (messaging, data management, system integration).
Here in P92 we use Java in most of our projects both in desktop and server-side applications as it helps us to achieve project goals quickly, in a predictable and time and cost-effective manner, resulting in high performance solutions for our clients such as Tesco, BMW, Barclays, Sony and Hellmann Logistics.
When Apple introduced Swift a few years ago P92 realised that the smaller learning curve of the new language provided opportunity for iOS development. At the same time, existing customers began requesting an increasing number of mobile extensions to their systems.
A small team of experienced Java developers with fresh MacBooks began to explore Swift and the iPhone/iPad ecosystem including third party open source packages and after looking into cross-platform solutions like Xamarin, we settled with native iOS and delivered our own first iPhone Swift app which made it to Apple's Appstore in 2018. The app enables used car buyers to compare the maintenance costs of their chosen models. The backend was implemented in Google's Firebase system.
Bloomreach Experience Manager
Bloomreach Experience Manager is a digital experience platform that can be used for creating relevant, personalised experiences across all channels.
A separation of the content from the presentation logic enables content editors to create content once, and then publish it to multiple places such as websites, mobile sites, Facebook, REST services, digital magazines and mobile apps.
The modular architecture and support for open standards make it an ideal solution for agile development and open integration.
Under the hood, it supports many open standards such as JCR and REST to help simplify development and integrations with existing systems.
Bloomreach Experience Manager's delivery framework (HST) provides the tools for rapid development of delivery channels such as websites, single-page applications and REST endpoints.
Both the user interface and the delivery framework are highly customizable and extensible.
For all these reasons, we opted to use the Bloomreach Experience Manager to build our own site!
DevSecOps / DevOps
Leaving the classic software methodologies behind, a new set of practices have emerged in the last decade to provide a better method for software development and management. As a result, in addition to supporting specific phases of the development and operation lifecycle of a software with tools, we began to fully automate processes by using automated systems such as CI/CD, as well as embracing cloud technology.
Magento2 is the leading ecommerce content management system (CMS). It is estimated that 1 in 4 business use Magento software for their online retail requirements.
The reason for Magento’s popularity is its feature-rich platform that allows the look, content and functionality of an eCommerce store to be controlled. It offers a highly intuitive interface with an amazing catalogue as well as marketing tools to help create a strong online presence.
Additionally, it provides rich, out-of-the-box features, an unrivalled ability to customise, and seamless third-party integrations which gives the power to create unique and engaging shopping experiences for customers.
Magento modules provide specific product features by implementing new functionality or extending the functionality of other modules. For example, to improve operational efficiency, Magento provides advanced inventory management to allow the management and control of stock across multiple physical locations.
Commerce dashboards use Magento data to analyse orders and products to provide information on customer lifetime value, top selling products and repeat order probability.
The easy-to-use reporting tools provides insights on selling, customer behaviour and efficiency.
The large array of features Magento offers allows the development and management of a successful online store. For example, shipping features reduce shipping-related costs by using advanced packing rules and shipment rating to ensure efficient carrier selection and more accurate carrier billing.
Other features available such as promotions, pricing, search engine optimisation, content management, catalogue management, checkout, payments, business intelligence, shipping, inventory and order management, customer service, loyalty, customer accounts, global sites, security, performance, and cloud deployment all add to the richness of the platform.
Liferay Portal is an enterprise portal and framework written in Java.
Liferay provides a robust platform from which to serve your site to all clients, be they desktop, mobile, or anything in between. Liferay provides all the standard applications you need to run on your site and provides an easy to use, development framework for new applications or for customization.
Liferay can be used to build all manner of sizes of websites, from the smallest of sites, all the way up to the largest sites. Additionally, Liferay provides an open source version for non-profit organizations and an enterprise edition for mission critical applications.
WordPress is a content management system (CMS) built with PHP and MySQL.
WordPress suits many uses from blogging, forums, to online stores. More than 30% of the top 10 million websites use WordPress and is particularly popular because it does not require programming knowledge to set up a site and hosting providers can easily be sourced with WordPress support.
The CMS is built in a modular way which makes extending functionality a simple process. It has a large community, so help can be easily found, and many third-party companies have created good quality extensions which can be bought and used on your site.
Similarly, themes can be bought or created to your own design and are installed in the same easy way as extensions. In addition, most themes have out of the box mobile support included.
WordPress supports multilingual sites well and management of this is straightforward in the same way as the management of the content itself. Useful extra services such malware removal for WordPress sites are offered by many hosting providers.
PHP is one of the most popular scripting languages used for web development. It is fast, flexible and suitable for small blog engines through to large-scaled applications like Facebook.
It was first released more than 20 years ago and is supported by most of the hosting providers worldwide.
There are many products built on top of PHP that resolve a wide range of business needs, such as WordPress for creating a blog, Magento for creating an online web shop or Symfony and Laravel to build an application from scratch.
P92 has in excess of 5 years’ experience working with PHP using Symfony, plain PHP, Drupal and Laravel.
HTML (Hypertext Mark-up Language) describes the structure of the web page, using tags. It has tags for links, images, tables, videos, etc. Using combinations of these tags it makes it possible to build a full web page. Search engines crawlers analyse the HTML source of the web page to make it possible for you to “google” for the things you would like to see.
CSS (Cascading Style Sheets) is a language used to describe how the elements we have built up using the HTML language above will look like in the browser window. It can set the size, the alignment or the colour of an element, and it can specify what it should look like in different resolutions. In the last couple of years CSS has received some nice upgrades (for example, LESS and SASS) making it more configurable. Every web developer will know the basics of the CSS. However, CSS is easy to learn but hard to master.
When the Enterprise Edition of Java first came out, it was meant to be the primary choice in large scale application development. Developers might remember it was more like a nightmare. J2EE inspired creators of many frameworks as alternatives to some parts of the Java Enterprise Edition. One of these alternatives was a bean container called Spring Framework.
Nowadays Spring Framework is the most popular technology stack in the Java ecosystem. Started many years ago as an Inversion of Control container it has become a complex solution for even cloud-based projects.
When starting a new project from scratch one can hardly avoid using at least some of the services Spring can provide: MVC or reactive web components for building portlets or web services, Boot, Spring Integration, Spring Data, Cloud Gateway together with Eureka, or many other solutions the framework and related projects provide.
Being backed by SpringSource and Pivotal, the framework is one of the most reliable open source software available.
Together with Struts and Hibernate they are the "Trinity" of the lightweight enterprise stack, free and open source. Many of our solutions have been built on these technologies, not just for the ease of use and convenience they provided, but to save time in development and in maintenance as well.
Drupal is a reliable, secure, scalable and flexible platform for web content management. It is the preferred platform among global enterprises, government and higher education institutions. It powers more than a million sites worldwide.
Drupal has strong foundations and lives on modern technology stacks such as Linux, PHP, MySQL, which together, makes building advanced digital platforms possible. In addition, it’s highly effective modules, themes and tools makes content creation, publishing and customisation a straightforward task.
Drupal’s localisation capabilities enables adaptation of language, cultural and other requirements meaning that sites can easily be delivered to a global, multilingual audience and sites managed for different regions.
As a bonus, with the huge worldwide community and impressive amount of accumulated experience this attracts, support for Drupal far exceeds other similar digital platforms, even commercial ones.
The most popular framework to create these complex UI with rich features is the Angular framework created by Google.
P92 use Angular as our main frontend component for websites as it can use the same backend REST resources as mobile applications, meaning it can provide a web-based user interface for the same application.
AWS – Amazon Web Services
Amazon Web Services (AWS) is a cloud computing platform. It is one of the most popular cloud services providers.
AWS is comprehensive, easy to use and provides customers with a wide variety of cloud services ranging from virtual machining, file storage, email sending services, media processing and AI, to name but a few! It’s processes and workflows are well established.
AWS also provides third-party software such as Microsoft Windows, SQL Server, Atlassian Jira, all with built-in licensing fees which removes the licensing administration overhead.
P92 has been working with AWS for approaching 10 years and we make full use of the vast choice of services for all businesses and technical challenges that the platform offers.
Generally, we deploy in the region where our customers and their customers are based so that we can best comply with local and global data protection laws.
.NET Core is an open-source, managed framework that is maintained by Microsoft and the .NET community on GitHub and uses MIT and Apache licenses. Its cross-platform framework runs on Windows, macOS, and Linux operating systems and is compatible with the well-known .Net Framework, Xamarin and Mono via .NET Standard.
P92 develop applications in .Net Core using popular languages such as C#, Visual Basic, and F#. .NET core can easily run in Docker container.
Exploiting Microsoft’s tendency to introduce frameworks that are based on .NET Core (such as ASP.NET Core), we create cross-platform, high-performance frameworks for building web applications and deploy these solutions to the cloud or on-premises. We host them using a range of different types of web servers such as Kestrel, IIS, Nginx and Apache. In addition, by using ASP.NET Core we are able to create REST based endpoints and use popular frameworks such as Angular, React or Vue where we need to provide a RESTful backend.
We use .NET Core 3.0 to develop desktop applications using Windows Forms or Windows Presentation Foundations and support database operations by using Object related mapping technology (entity framework).
Firebase became a household name at P92 during a phase when we were working with a rapidly growing number of customers seeking small to medium sized mobile solutions. To meet these requirements, we realized we needed to source a viable, cloud-based, low-cost, maintainable solution for the backend and Firebase fitted the bill.
Firebase offers a versatile toolset for small to medium projects with easy maintenance and quick returns.
As an organic part of the MEAN stack, we use Node.js for backend services in our related projects.
On our smaller scale developments we tend to use the MEAN stack combined with Google Firebase for its SAAS (Software As A Service) as this combination enables rapid development.
Additionally, Cloud Functions can be written in Node.js with the Cloud Functions providing the infrastructure, monitoring, logging and distributed tracing.
P92 has approaching 5 years of experience using Kotlin for backend and Android development as a Java alternative. We favour using Kotlin for it’s functional programming support and it’s quick release lifecycle as opposed to the official Java. However, since Kotlin is a JVM based language, we also benefit from being able to make very good use of our more than 20 years of Enterprise Java development experience.
On Android we have now entirely moved from Java to Kotlin. In our enterprise application development we also prefer using Kotlin where the project or solution requires a mix of mobile and backend components.
With Kotlin’s similarity to Swift, it fits really well in cases where we have a Swift based iOS app, a Kotlin based Android app and (Kotlin) backend. This similarity gives our cross-functional development team a big advantage.
Microsoft Azure is a cloud computing service for building, testing and deploying applications and services through Microsoft-managed data centres. It provides Software as a Service, Platform as a Service or Infrastructure as a Service.
Azure has many services and the number of services increases year by year. Microsoft groups these services into categories according to their functionality, with some of the most popular services being Compute services, Data Management services and Storage services.
P92 has great experience using Azure and is our go-to solution when a highly scalable, reliable system with low initial start-up complexity is called for or when an automatic backup mechanism is required. Being able to configure Azure away from the portal by using Azure-CLI or Powershell is also a distinct advantage.
Our .NET based solutions are hosted on an Azure cloud platform and we suggest using App Service to host web applications which enables a great level of ease for scale up (to have stronger machine) or scale out (to have multiple instances) of our solution.
For data handling, we use Microsoft Sql Server as a Platform solution, or Azure Storage. And for caching, Azure Redis Cache provides a quick and secure way to cache your application's data.
By using Azure, we can configure our Continuous Integration solution to build and deploy our application into Azure and run tests automatically.
C# (C-Sharp) is a programming language developed by Microsoft that runs on the .NET Framework. C# is used to develop web apps, desktop apps, mobile apps, games and much more. .NET is a developer platform made up of tools, programming languages, and libraries for building many different types of applications. ASP.NET provides a powerful, patterns-based way to build dynamic websites using the MVC pattern and enables a clean separation of concerns.
P92 has approaching a decade’s worth of experience working with C# and .NET projects building ASP.NET web applications, desktop applications, backend solutions and mobile apps for clients.
DotNetNuke (DNN) is an open source modular content management system written in ASP.NET. It is designed to be adaptable to various types of businesses by using modules. It’s functionality can be extended through modules obtained from the DNN Store (store.dnnsoftware.com) or by creating modules to meet business requirements through .NET Web application projects, creation of dynamic modules using Web site projects or by using the Razor modules.
DNN provides a basic framework for user management, social media integration, content management, site administration, module management, to name but a few. Web pages have skins which define regions of a page and pages and modules can inherit or can have custom access permissions set that define which groups of users can view or edit each item.