Newsflash

 Jegas, LLC- Virtually Everything IT!TM

 Jegas, LLC is undergoing a major systems infrastructure overhaul.

Operating systems, hardware, development focus and even our strategies are just some of the things that are changing.

We have five major development efforts underway and we are narrowing our focus so that we can excel at what it is we do best: systems!

Our early adopter program for the "Accounting Integration - vTigerCRM and Quickbooks" has been picking up momentum from a funding perspective, and development efforts and internal investments have been matching them 50/50! We hoped to have a beta released by now, however we are staying the course!

Our 3D graphics team is creating a new graphics engine for Windows' DirectX 9,10,11 platforms while simultaneously building a simulation environment SDK for both industrial and entertainment applications: Simulation software and games!

We have two projects of breadth for clients in the making: one is a complete telemarketing system and the other is related to CRM data migration and is helping the vTigerCRM and Quickbooks initiative development efforts indirectly.

Lastly, the Jegas Application Server is starting to gain breadth in the number of technologies it can bring together, unfettering vendor lockin and the pain of owning disparate technologies that need to communicate with each other.

So, bear with our appearance, and temporary sluggishness... we are much busier than it seems!

--Jason P Sage

 

Jegas, LLC- Virtually Everything IT! TM

Home Jegas Products Jegas Application Server
Jegas Application Server PDF Print E-mail
Written by Jason P Sage   
Sunday, 30 November 2008 16:48

Jegas Application Server                           

Get out of the Main-Stream and step into the Jet-Stream TM

Contents

Overview

What is JAS?

In short JAS, or the Jegas Application Server, is a customizable, multi-user, internet-enabled database application and infrastructure. It is designed to address the reccurring need for customer information and systems integration. JAS is multi-lingual and can grow with an organization.

JAS was designed for consolidating multiple business systems and data sources into one consistent user interface and system interface to increase overall productivity and collaboration.

JAS's template-driven architecture gives web developers artistic freedom without impacting the underlying system. For consistency JAS can be integrated into existing websites.

JAS allows you simultaneous access with virtually any database capable of ODBC and manages all control and security internally.

IMPORTANT: Jegas Application Server can now run as both a standalone web server and can even be run via a special proxy that works with any CGI capable webserver (hint: allows for farming across disparate webservers if necessary)

What's It For?

What does JAS actually do and how can it help me?

JAS is a basic CRM system, Collaboration tool, Communication Platform and much more.  Version 1.0.0 has the functionality of a basic Contact Manager "out of the box" but has infrastructure in place for extreme custom programming enhancements and feature enhancements.

JAS can track any and all your information in one or multiple databases with minimal setup and provides a web interface to interact with it and is continually being enhanced. We are currently deploying it as the front end for a large call center who manages many large phone companies' client bases.

JAS can maintain contact information, customers, vendors, leads, user to user communication, track email correspondence and associate it with the correct people to help your information work for you and help you find information quickly. JAS has a data model that has the real world in mind.

What is it capable of?

  • Customer Relationship Management
  • Accounting
  • Communication
  • Creating Interactive data driven web sites and applications
  • Work Flow
  • Inventory Maintenance, Valuation and Reporting
  • Purchase Orders
  • Online Orders
  • Invoices and Packing Lists
  • Call Center System Consolidation

Frankly, JAS was literally designed to be capable and pliable enough to be tailored to just about and information management need, automation task and primarily system integration. This includes leveraging your existing business systems and building on them. Version 1.0 is a uniquely designed contact manager with the ability to add custom tables, databases, and create basic web interfaces to these custom tables and databases as well as create "self help" services for both your clients and employees alike: e.g. Checking balances of accounts, scheduling vacation and delegating and updating existing jobs from the field via internet browser capable wireless devices.

Jegas, LLC offers all core feature enhancements as free upgrades for the life of the product. Our current focus is streamlining the dynamic screen editors and enhancing the CRM functionality.

Extreme Examples Possible with JAS (CRM centric) data model design

Example 1: JAS allows a person to be a customer, a vendor, a lead and an employee all at the same time. This person can be working for multiple companies at once or none at all. This person can be a lead for one of these companies, and simultaneously be a confirmed customer without data redundancy. This person could be fired from one company and the only thing that would need to happen in the database is that person would need to be removed as "part of" said company. That person doesn't go away, they are now just associated with one less company in this example.

Example 2: JAS has unique way for storing personal contact information like telephone numbers, fax, etc, email addresses and web URLS so that the information only exists once in the database. If a phone number is entered into the system twice for example, it doesn't get added again, but the system does associate that number to whatever context it was "added" to the second time. For instance, if you had a company in your database with 555-5555 as the phone number, and a prospect called anonymously and left a call back number, you would know immediately that that person called from a number associated with that company. Furthermore - you may, but do not have to, associate that person with that company - only the phone number is shared. Does this sound complex? Perhaps it does sound complex but the design is surprisingly simple. Under the Hood the phone number is in there once, and there are links in the database that record who or what is somehow connected to that phone number. Additionally, if 50 people had the same phone number - and that phone number changed - you can change that number for all 50 people with one edit. Conversely, if 1 of those 50 people needed their number changed, the new number would be added to the system and the old number would become unlinked to that person.

The above examples are admittedly extreme - but the fact is, these issues come up all the time in information technology and there rarely is there a nice way to handle these scenarios with most systems. Many do not think of these things until they try to do them and realize their system doesn't allow for it in a clean and logical manner. We've put a lot of foresight into the design - so that JAS doesn't become outdated or lose its value in the forseeable future. The thought was by making the core capable of reflecting real life and real world problems and circumstances - the more solid the system as a whole would be as new modules for various business applications were added.

Limitations, like the ones mentioned above, make integrating different information systems difficult. The impact of a poor design may not be noticeable in the beginning but can become quite significant later down the road.

Duplicate storage of data, such as phone numbers for example, makes it difficult to manage things when a piece of data needs to be changed. Does your system update phone number information appropriately when modified?

What happens if two separate systems get out of synchronization? One system may have a person in an accounts receivable data export, but that person exists in another system as something completely different, perhaps a vendor. If that person calls to change their information, are you sure your system will allow you to modify their information globally or will you have to check and verify that each system is updated manually? One takes more time than the other and time is money. This is one way that the Jegas Application Server is easier to manage and is of value.

CRM technology is changing every day and is not the same from company to company - however, in order to build the next generation of CRM systems that are capable of data analysis, customer trend research, and decision support require a reliable database structure that reflects life in a real way. JAS's data design and core code-base are equipped to fill this need.

System Requirements

Hardware

To run JAS you need one of the following chipsets:

  • Intel x86
  • Amd64/x86_64
  • PowerPC
  • Sparc

Operating Systems

JAS needs to be installed in one of the following operating systems:

  • Linux
  • FreeBSD - Providing Support exists from MySQL AB for this OS
  • Mac OS X/Darwin
  • Win32 - 2000, Me, XP, Vista

Software

JAS has minimal support requirements however configuration procedures need to be followed to get all the system components to talk to each other properly:

  • MySQL relational database software.
  • Linux, Unix, FreeBSD, MAC or Windows 95+

JAS has the ability to proxy AJAX requests from any CGI compliant web server to any other. (This bypasses cross domain scripting restraints implemented in most (all?) web browsers with AJAX support.) 

The base MySQL server and other data sources can reside on any system they are supported to run on; as long as there is network connectivity and proper database login credentials - the system works fine. Each database has its own connection credentials - so they aren't covered individually; however the DBA must remember to allow the JAS account to have access to the database from at least the system that houses the JAS software itself. (MySQL has security features that limit access based on the normal username and password but also restricts which systems are allowed to connect by IP and/or domain name.)

We recommend for 1 to 25 users a minimum of a Linux 32bit architecture box with a minimum of 1 gig of ram and plenty of disc storage space. There isn't a huge demand for disk space for JAS itself but you should have plenty of room for the operating system, the database software, the web server software and just room for your database(s) to grow. This is the recommended server configuration for a self contained server. Windows Server 2003 and later will run JAS just fine as well. Operating systems like XP MAY encounter lag or have difficulty handling a large number of requests simultaneously. NOTE: URI query lengths on Win32 systems are limited to 255 chars (Cause: FreePascal dos unit library limitation needed on windows platforms), while the only limit is your client's browser choice when the system is installed on non-windows platforms. POST requests are not limited at all as one would expect from HTTP protocols.

Architecture

- What does the system comprise of?

JAS is written in Free Pascal which can be compiled on a number of different operating systems and chipsets. Free Pascal is object oriented like C++ but is more portable and does not have the licensing restrictions placed on it like many portable C++ libraries have. Often these C++ libraries do not allow compiling and distributing commercial products with them. We also refrain from using languages that force vendor lock in concerning the operating system as is the case with .Net or Microsoft C++. Jegas, LLC prefers the "write once - compile anywhere" model for a combination of speed, portability and freedom.

The native DBMS is currently MySQL®AB's flagship server product and connectivity to other ODBC compliant data sources is supported.

The user interface is comprised of HTML templates and some HTML tags that are dynamically generated for specific types of data that warrant it. Because web browser and standards are a constantly changing, templates allow the system to be tailored as necessary to keep up to date. Templates also allow web designers to change the appearance of the system without needing to worry about impacting the system's core functionality. Most importantly, the templating system allows a true separation of system architecture and user interfaces, something nearly impossible to do with scripted solutions.

The Jegas Application Server is in fact a web server capable of CGI, hosting pages, files, graphics, in addition to serving truly binary web applications without CGI, FastCGI or script compiling overhead.

Design Philosophy

Why did you build it this way?

Many things were taken into account based on life experience working with companies of all sizes, types of software functionality they sought and the struggles that were encountered while making those systems work the way they wanted.

We are going to summarize some major factors that led to our current design.

Free Pascal??

Its free, its fast, can be used for web, desktop, or daemon applications, FPC has a large global community for support, its portable, object oriented, can be connected to databases and just about anything else... It's a no brainer.

Most companies have multiple systems running different parts of their business. This means that support personnel need to be able to support any number of different technologies. Often, there are systems used for high volume processing that are based on completely different technology than their web based systems. Because Free Pascal was found to be equivalent or superior in speed, is portable and free, it became the language of choice to write the Jegas Application Server with. Free Pascal can be effectively used for both web applications and the most demanding, data intensive applications. It's fast! This means that one programming language can cover an enormous amount of ground - making the investment in learning the language worthwhile without licensing costs.

Scope out the FreePascal.org if you have a minute...

The Jegas Application Server has also been developed with a goal of fast execution. We started with a CGI system that worked like FastCGI with a more portable interface and similiar speed gains over typical CGI implementations. We now have a stand alone web server as our foundation and this eliminates all bottlenecks to getting requests handled quickly: No Scripting Language Parsing like with PHP or Perl, no CGI overhead - No Waste = FAST! What did we do? The JAS foundation is a web server, so there is no loss trying to delgate what system to send a request to - they are just handled. Your JAS webserver IS your application... and yes, you can customize it too!

First, to see understand how what we did is advantageous, you should understand the steps the web server takes when launching a typical CGI application. Then we'll explain what we did and how this scales compared to scripted language solutions. Note: Bold items in list below are the steps JAS follows while executing applications.

  1. Web page requests come in though the network; usually but not the rule, sent from some web browser software.
  2. The web server software analyzes the URL request against its configuration to see where and how this request is to be handled - (Is it CGI? Script, File Request? Etc)
  3. Web Server creates a process to be able to load and run the CGI application.
  4. Process (or shell) loads the CGI application. (Scripted Solutions must also be compiled in this step before they can be run)
  5. Application is executed (CGI and Script Modules also must sends the result (web page usually) back to the web server core)
  6. Non-Parsed Header CGI requests (CGI NPH) are finished (JAS uses CGI NPH), however Parsed header CGI requests are put through additional processing by the web server software.
  7. Web Server passes result to the requester on the network (typically the user with the web browser client requesting a web page)
  8. Created Process is freed from memory.

The problem with the above steps is that Step 3 and Step 4 cost a fair amount of CPU cycles. Step 3 is not a show stopper by any means but Step 4 has been for many CGI applications. Why? When binary CGI applications get larger and more complex, they take longer to load which in turn impacts performance. Additionally, for any database functionality - the database connections need to be established each time a request is made - which impacts performance even more! We are quite pleased with the performance and scalability the JAS design makes possible.

JAS even handles "Denial of Service" attacks better than most mainstream webservers because YOU control the resources it uses, they are not dynamically created on demand which is the main reason systems can fail during these kinds of attacks. JAS just trudges through like people waiting at the deli in the supermarket waiting for their turn to buy: First Come, First Served. (In extreme cases, if the socket buffer fills, requests can be dropped. Most operating systems allow you to change the sizes of inbound IP buffers and note this would happen only after there were no available servers left to delegate the requet to (in server farm environments).

How does this compare to scripted languages like PHP, ASP, and Perl?

Scripted languages all behave differently but there are two main types of scripted interpreters used on the internet: CGI launched and loaded web server modules. CGI launched script interpreters are portable (and some argue more secure than module types) but usually suffer from lag in step 4 mentioned above; this is why most are made into the loadable modules variety because they allow scripts to perform better. JAS doesn't use this approach because each loadable module is web server software specific and makes portability a tougher challenge then it already is requiring more constant attention. We prefer to use our own software foundation so that JAS and your customizations are all created from the same cloth.

Scripted applications are different than compiled binary applications in that the script needs to be interpreted by the module each and every time the script is launched. There are improvements becoming more available that speed up PHP via special caching and new "precompile" strategies, however niether can replace the power a mature object oriented programming language offers in terms of stability, semantics, readability and the separation of business logic and user interface not offered by scripted solutions.

Loaded module script interpreters do not suffer from step 3 above because they are preloaded however the speed that scripts are interpreted is directly related to how complex they are. So, loaded module scripts are quicker out of the gate but they always run slower than similar applications that are compiled to a binary form that the CPU can execute directly. Script interpreters are like human language translators. Script interpreters will always be slower because they need to translate what the script says to do to something the computer can understand natively one step at a time, each and every time the script is run. Compiled applications are compiled once to a binary form the CPU can run directly - again and again without needing to recompile.

Operating Systems such as Windows and Linux are compiled to binary code because it's the only language the computer's processor(s) truly understand. You will never see a scripted operating system - and in case one pops up (Google is creating the closest thing to it we know of..but...) - its still being run by a binary program under the hood, on the CPU like JAS and many other compiled applications.

FYI: Java applets - are not actually compiled to CPU executable binaries but are instead preprocessed and organized to be executed by a different kind of interpreter designed specifically to run faster than raw (not preprocessed) script as well as providing a way for developers to be able to release products without releasing their source code or raw java script. This is great for portability. While Java is compile once run anywhere, our programming model is write once compile anywhere and run really fast!

How does the JAS implementation compare to scripted solutions?

We've touched on this subject quite a bit already but there is more to tell. Put some JAS on those IT fires!

How would you make an application that could syncronize multiple databases, as as a web-service and web server, a CRM, a consolidated GUI and security system for your organizations web based applications? How many technologies would you use? I bet you could scrap quite a few of those technologies if you employed JAS as your foundation for system integration and custom business software.

A script lives from the time its fired until the source code of that page is completed. JAS is running all the time, serving requests, polling, and is capable of doing all kinds of tasks when idle or not. Scripted applications run slower and do not have this kind of brute strength. You can whip out some script pretty quickly to get a job done, and even write applications that work fine. But if you want speed, security, and an application framework designed for large applications written in a language that has been advancing for over 20 years... get out of the main-stream and step into the jet-stream!

"This isn't a case of Aesop's fable, "The tortoise and the hare"; but is like an internal combustion powered airplane against a jet powered plane. You might get the internal combustion powered airplane off the ground quicker but a jet will go farther and faster, hands down!" - Jason P Sage

Where's the download link?

We do not have a public download link at this time but we will provide software for evalution purposes upon request. JAS is an enterprise level solution whose licensing depends on your organization's needs. Contact us so we can discuss what JAS can do for you and your organization. 

Jegas, LLC- Virtually Everything IT! TM

Last Updated on Thursday, 27 August 2009 10:02
 
Solution Graphics
vTigerCRM OpenCRX