Go is an object-oriented programming language with a C-like syntax. Go is designed as a systems language, has a focus on concurrency, and is expressive, concurrent, garbage-collected. Go was developed by Rob Pike, Ken Thompson (The author of the Unix system) and others at Google in 2007 and was made public and open source in November 2009. Go supports a mixture of static and dynamic typing, and is designed to be safe and efficient. A primary motivation is compilation speed. Go language employs several modern approaches like internal user space process scheduler, multiplexed thread synchronization and communications channels, etc which makes it in some aspects superior that Java or C#. Go binaries does not ship with any kind of virtual machine, they are directly compiled into target platforms machine code.
All the above features comes for single executable. However if you plan to scale your system into clusters of servers and want to protect it against any kind of faults (for example Panics may occur in Go for defective program areas) or just build an open system, the additional middleware and application server is needed which will govern the processes and reboot them if needed.
Enduro/X for Go language is ground braking technology that Go is missing ever since. The Enduro/X for Go will extended the Go capabilities with rock solid application server, strong standardized distributed computing XATMI API and API for distributed transaction processing - XA. With Enduro/X Go executables can be booted in several copies and they transparently can communicate with each other, no matter on which physical server they are deployed.
As the middleware is the same for C and Go, it is possible to effectively mix these two programming languages and it is possible to have benefits from both worlds. High speed computing comes from C, and modern, dynamic web enabled programming features comes from Go.
The Enduro/X was first ever platform which offered distributed transaction processing, meaning that one single resource (e.g. database) transaction can be processed by multiple executables on multiple physical servers. Also one transaction may include several databases and platform will orchestrate common commit.
Details of the Enduro/X for Go product
The Enduro/X for Go product provides following features for the system developers and integrators:
- Full availability of the XATMI APIs.
- Extended operations with UBF protocol buffer (marshal and unmarshal support).
- XATMI server executable type.
- XATMI client executable type.
- Common logging framework.
- Common configuration framework.
- Code generators for basic Go Server and Go client.
- Full multi-threading support including Go routines. The Enduro/X Go package encapsulates the approach of the Enduro/X API Context object that can be associated with Go routine, independently of the physical thread.
- Source code availability.
- Includes XA Driver for Oracle DB - packages "go-oci8" provided by Mavimax.
- The Go applications made for Enduro/X will benefit all the features that comes from Enduro/X Core package.