JADE (programming language): Difference between revisions

mNo edit summary
m 1 revision imported: Apply cleanup edits
 
(64 intermediate revisions by 49 users not shown)
Line 1: Line 1:
{{About|the end-to-end development environment|the Java middleware|Java Agent Development Framework|the Javascript templating engine|Comparison of web template engines}}
{{About|the end-to-end development environment|the Java middleware|Java Agent Development Framework|the Pug (formerly Jade) Javascript templating engine|Comparison of web template engines}}
{{Multiple issues|
{{Infobox programming language
{{refimprove|date=December 2012}}
| name = JADE
{{primary sources|date=December 2012}}
| logo = JADE (programming language) logo.svg
| logo caption = Jade Software corporate logo
| screenshot = <!-- Filename -->
| screenshot caption =
| sampleCode =
| paradigm = [[Object-oriented programming|object-oriented]]
| family = [[Pascal (programming language)|Pascal]]: [[Modula-2]]
| designer = <!-- or: designers = -->
| developer = Jade Software
| released = <!-- {{Start date and age|20yy|mm|dd|df=yes}} -->
| latest release version = 2025.0.01 (R1)
| latest release date = {{Start date and age|2025}}
| typing = [[Static type|static]], [[Strong and weak typing|strong]], [[Type system#Type safety and memory safety|safe]]
| memory management = [[Garbage collection (computer science)|automatic]]
| scope = [[Scope (computer programming)|lexical]]
| programming language =
| platform = [[x86-64]], [[.NET]]
| operating system = [[Microsoft Windows|Windows]]
| license = [[Proprietary software|Proprietary]]
| file ext =
| file format = <!-- or: | file formats = -->
| website = {{URL|www.jadeworld.com}}
| implementations =
| dialects =
| influenced by = [[Pascal (programming language)|Pascal]], [[Modula-2]]
| influenced =
}}
}}
{{Use dmy dates|date=June 2014}}
[[File:JADE (programming language) logo.png|thumb|The JADE logo]]
'''JADE''' is a proprietary [[object-oriented]] software development and deployment platform product from the New Zealand-based Jade Software Corporation, first released in 1996.<ref>{{cite web|url=https://www.jadeworld.com/who-we-are/ | title=Jade – Who We Are  |publisher=Jade Software Corporation}}</ref> It consists of the JADE programming language, [[Integrated development environment|IDE]] and [[debugger]], integrated [[application server]] and [[object database]] management system.


Designed as an end-to-end development environment to allow systems to be coded in one language from the [[database server]] down to the [[client (computing)|clients]], it also provides [[API]]<nowiki/>s for other languages, including [[.NET Framework]],<ref name="dotNET">[http://www.scoop.co.nz/stories/BU0905/S00125.htm Scoop Independent News – JADE 6.3]</ref> [[Java (programming language)|Java]], [[C (programming language)|C]]/[[C++]] and [[Web service]]s.
'''JADE''' is a proprietary [[Object-oriented programming|object-oriented]] software development and deployment platform product from the New Zealand-based Jade Software Corporation, first released in 1996.<ref>{{cite web|url=https://www.jadeworld.com/who-we-are/ |title=Jade – Who We Are |publisher=[[Jade Software Corporation]]}}</ref><ref>{{cite web|url=https://www.zdnet.com/article/jade-delivers-version-7-1/|title=Jade Software delivers Jade 7.1|publisher=[[ZDnet]]|access-date=21 December 2019}}</ref> It consists of the JADE programming language, [[integrated development environment]] and [[debugger]], integrated [[application server]] and [[object database]] management system.


As a programming language, its main competitors are Java and [[C Sharp (programming language)|C#]], while as a database it competes with other object-oriented databases and [[post-relational database]]s such as [[Versant Object Database|Versant]], [[Caché (software)|Caché]] and [[Matisse (DBMS)|Matisse]] as well as traditional relational database software packages such as [[Oracle database|Oracle]] and [[Microsoft SQL Server]].
Designed as an end-to-end development environment to allow systems to be coded in one language from the [[database server]] down to the [[client (computing)|clients]], it also provides application programming interfaces ([[API]]s) for other languages, including [[.NET]] framework,<ref name="dotNET">{{cite web|url=https://www.scoop.co.nz/stories/BU0905/S00125.htm|title=Scoop Independent News – JADE 6.3|access-date=21 December 2019}}</ref> [[Java (programming language)|Java]], [[C (programming language)|C]], [[C++]], and [[Web service]]s.


Although a free limited licence is available for development, using the JADE platform requires per-process fees to be paid.
The JADE platform is dual-[[Software license|licensed]]. For development, the free limited ''Jade Development Licence'' is provided. For deployment, a [[proprietary software]] licence mandates per-process fees.


==Language==
==Language==
In syntax, JADE is very similar to [[Pascal (programming language)|Pascal]]; its syntax is based on the language [[Modula-2]], which was derived from Pascal. While it includes innovations lacking in Pascal or Modula-2, it lacks certain features of other modern object-oriented languages such as C# and Java.<ref name="obscure">[http://www.devtopics.com/jade-obscure-programming-language-of-the-month/ JADE: Obscure Programming Language of the Month]</ref>
In [[Syntax (programming languages)|syntax]], JADE is very similar to [[Pascal (programming language)|Pascal]]; its syntax is based on the language [[Modula-2]], which was derived from Pascal. While it includes innovations lacking in Pascal or Modula-2, it lacks certain features of other modern object-oriented languages such as [[C Sharp (programming language)|C#]] and Java.<ref name="obscure">{{Cite news |last=Toady |first=Tim |date=3 June 2009 |title=JADE: Obscure Programming Language of the Month |work=DevTopics |access-date=12 March 2021 |url= https://www.devtopics.com/jade-obscure-programming-language-of-the-month/}}</ref>


JADE is able to import and run [[LINC_4GL]] programs and was initially its core role.
JADE is able to import and run [[LINC 4GL]] programs and was initially its core role.


===Programming model===
===Programming model===
Like all of the other popular programming languages used to create database-driven software, JADE is fully [[object-oriented programming|object-oriented]]. JADE was designed to have all the most important features of object-oriented programming, but does not support the overloading of methods or operators, and lacks parameterised constructors.<ref name="obscure"/>
Like all of the other popular programming languages used to create database-driven software, JADE is fully [[Object-oriented programming|object-oriented]]. JADE was designed to have all the most important features of object-oriented programming, but does not support overloading of [[Method (computer programming)|methods]] or [[Operator (computer programming)|operators]], and until Jade 2018, lacked parameterised [[Constructor (object-oriented programming)|constructors]].<ref name="obscure"/>


Classes in JADE are kept together in [[logical schema|schemas]]. Schemas serve the same purpose as [[Java package]]s or [[namespaces]] in .NET, but have a hierarchy, and inherit classes from superschemas. This becomes useful especially when programming using the [[model-view-controller]] methodology, as model classes can be put in one schema, then the controller and view classes can be built on top of the model classes in a subschema.
Classes in JADE are kept together in [[logical schema|schemas]]. Schemas serve the same purpose as [[Java package]]s or [[namespace]]s in .NET, but have a hierarchy, and inherit classes from superschemas. This becomes useful especially when programming using the [[model–view–controller]] methodology, as model classes can be put in one schema, then the controller and view classes can be built on top of the model classes in a subschema.{{Citation needed|date=January 2026}}


===Program structure===
===Program structure===
JADE programs are developed using a user interface that allows programmers to visually create [[class (computer science)|classes]] and define their properties and methods. Instead of locating methods in large files, programmers select the method they would like to edit and only the code for that particular method is displayed. Also instead of compiling all the code of a program at once, in JADE, each method is compiled individually as soon as the method is completed, meaning code can be checked immediately.
JADE programs are developed using a user interface that allows programmers to visually create [[class (computer science)|classes]] and define their properties and methods. Instead of locating methods in large files, programmers select the method they would like to edit and only the code for that particular method is displayed. Also instead of compiling all the code of a program at once, in JADE, each method is compiled individually as soon as the method is completed, meaning code can be checked immediately.


All the code for a JADE application is stored in its object-oriented database. This allows for multi-user development as the database maintains concurrency control, and with each piece of the code being a separate object in the database, it is often possible to recode a system while it is live and online as long as the parts of the system being changed are not in use.
All the code for a JADE application is stored in its object-oriented database. This allows for multi-user development as the database maintains [[concurrency control]], and with each piece of the code being a separate [[Object (computer science)|object]] in the database, it is often possible to [[recode]] a system while it is live and online as long as the parts of the system being changed are not in use.


==Features==
==Features==
Line 41: Line 63:
JADE's database is inherently object-oriented, and [[ACID]]-compliant, and has all of the standard features such as atomic transactions, locking, rollback, crash recovery and the ability to keep one or more [[secondary database server]]s synchronised with the main database for backup, disaster recovery and performance reasons.
JADE's database is inherently object-oriented, and [[ACID]]-compliant, and has all of the standard features such as atomic transactions, locking, rollback, crash recovery and the ability to keep one or more [[secondary database server]]s synchronised with the main database for backup, disaster recovery and performance reasons.


To interoperate with relational databases for reporting, [[business intelligence]] and [[data warehouse]] purposes JADE since 2010 has provided a "Relational Population Service" that enables automatically replicating objects from its native object-orientated database to one or more [[relational database]]. This feature supports Microsoft SQL Server versions 2000, 2005 and 2008.
To interoperate with relational databases for reporting, [[business intelligence]] and [[data warehouse]] purposes JADE since 2010 has provided a "Relational Population Service" that enables automatically replicating objects from its native object-orientated database to one or more [[relational database]]. This feature supports [[Microsoft SQL Server]] versions 2000, 2005 and 2008.


===Three-tier model===
===Three-tier model===
Database-driven software, often uses a [[three-tier (computing)|three-tier]] methodology with applications being split into three tiers – data storage, processing and presentation. In the data storage and processing tiers, JADE systems are a collection of co-operating servers, called [[node (networking)|nodes]], and multiple nodes may be involved in each tier. Each type of node has a different name and all are capable of manipulating objects and executing business logic. A collection of nodes can be deployed across one or several machines. Database servers handle data storage and can also execute business logic, while application servers handle processing. In a three-tier model, presentation clients provide the user interface. JADE also provides a two-tier client that combines the abilities of an application server and presentation client. Traditionally, these three tiers would be created by combining three programs and having them communicate to form one system. Having the different programs separate like this has many advantages, the main one is that the system becomes scalable, that is, raising the power of the system involves simply adding more nodes.
Database-driven software, often uses a [[three-tier (computing)|three-tier]] methodology with applications being split into three tiers – data storage, processing and presentation. In the data storage and processing tiers, JADE systems are a collection of co-operating servers, called [[node (networking)|nodes]], and multiple nodes may be involved in each tier. Each type of node has a different name and all are capable of manipulating objects and executing [[business logic]]. A collection of nodes can be deployed across one or several machines. Database servers handle data storage and can also execute business logic, while application servers handle processing. In a three-tier model, presentation clients provide the user interface. JADE also provides a two-tier client that combines the abilities of an application server and presentation client. Traditionally, these three tiers would be created by combining three programs and having them communicate to form one system. Having the different programs separate like this has many advantages, the main one is that the system becomes scalable, that is, raising the power of the system involves simply adding more nodes.


Designing a system like this gives the programmer a decision to consider every time they want to code in a particular function. They need to decide whether the function would run best on the database server, application server or presentation client before they begin coding as it will be difficult to change that decision once the functionality is coded into one of the tiers.
Designing a system like this gives the programmer a decision to consider every time they want to code in a particular function. They need to decide whether the function would run best on the database server, application server or presentation client before they begin coding as it will be difficult to change that decision once the functionality is coded into one of the tiers.
Line 73: Line 95:
* Cannot reach a worldwide audience as is possible on the World Wide Web.
* Cannot reach a worldwide audience as is possible on the World Wide Web.


JADE Forms have an interesting twist to them though. It is actually possible to run a JADE Forms application through a web browser by changing its mode to ''web-enabled''. When this happens, JADE automatically generates HTML code to make pages that resemble the forms and [[widget (computing)|controls]], without any modifications to the code. This is a very quick way for programmers that are not competent with HTML and other web technologies to deliver a program through the web.
JADE Forms applications can be executed within a web browser by utilizing the web-enabled mode. The platform automatically generates HTML to replicate the interface forms and [[widget (computing)|controls]], allowing existing applications to be deployed to the web without requiring modification to the underlying code or direct authoring of HTML.


====HTML documents====
====HTML documents====
JADE supports deployment of applications to the web through its HTML documents feature. These work very similarly to ASP.NET, where developers create templates of HTML pages and leave parts in the template for the program to fill in.
JADE supports deployment of applications to the web through its HTML documents feature. These work very similarly to [[ASP.NET]], where developers create templates of HTML pages and leave parts in the template for the program to fill in.


The advantages of using HTML documents are:
The advantages of using HTML documents are:
* Allows the application to reach a worldwide audience.
* Allows an application to reach a worldwide audience.


The disadvantages are:
The disadvantages are:
Line 89: Line 111:


====Interoperability====
====Interoperability====
In addition to Web services, JADE is also capable of interfacing with other programs through language APIs (including .NET, Java, C/C++), DLL calls, ActiveX/COM objects and .NET assemblies. This allows other programs to access objects and execute methods, and can be used to provide a different interface to a JADE application. JADE 6.2 provided a Java API, .NET Assembly integration and the ability to run Smart Thin Clients on Windows Mobile devices. JADE 6.3 provides an API for .NET languages.
Along with Web services, JADE can also interface with other programs through language APIs (including .NET, Java, C/C++), DLL calls, ActiveX/COM objects and .NET assemblies. This allows other programs to access objects and execute methods, and can be used to provide a different interface to a JADE application. JADE 6.2 provided a Java API, .NET Assembly integration and the ability to run Smart Thin Clients on [[Windows]] Mobile devices. JADE 6.3 provides an API for [[List of CLI languages|.NET languages]].


===Multilingual abilities===
===Multilingual abilities===
JADE natively supports [[multilingual]] programs. It does this in several ways:
JADE natively supports [[multilingual]] programs.<ref name="Witten 10–23">{{Cite journal |last=Witten |first=Ian H. |last2=Birtwistle |first2=Graham M. |last3=Cleary |first3=John |last4=Hill |first4=David R. |last5=Levinson |first5=Danny |last6=Lomow |first6=Greg |last7=Neal |first7=Radford |last8=Peterson |first8=Murray |last9=Unger |first9=Brian W. |last10=Wyvill |first10=Brian |date=July 1983 |title=Jade: a distributed software prototyping environment |url=https://dl.acm.org/doi/10.1145/850742.850744 |journal=ACM SIGOPS Operating Systems Review |language=en |volume=17 |issue=3 |pages=10–23 |doi=10.1145/850742.850744 |issn=0163-5980|doi-access=free }}</ref> It does this in several ways:
* Strings can be marked as ''translatable'', which means they will be change depending on the current language.
* Strings can be marked as ''translatable'', which means they will be change depending on the current language.
* Many versions of the same form can be created to suit each language. This means interfaces can look entirely different from one language to the next.
* Many versions of the same form can be created to suit each language. This means interfaces can look entirely different from one language to the next.
* The developer has methods available to access the current [[Locale (computer software)|locale]] of the system and so they can implement their own language-dependent features.
* The developer has methods available to access the current [[Locale (computer software)|locale]] of the system and so they can implement their own language-dependent features.


JADE will automatically switch to the language it detects on the system if the language is provided by the developer.
JADE will switch to the language it detects on a system automatically, if that language is provided on the system.<ref name="Witten 10–23"/>


===Portability===
===Portability===
Currently JADE applications can be run on Windows and Linux. Similar to Java, JADE strives to allow programmers to develop applications once and be able to allow them to run on both of these platforms with minimal changes. JADE 6.2 allows Smart Thin Clients and a specialised Standard Client to run on Windows Mobile devices.
{{As of|2025}}, JADE applications run on Windows only; Linux support was ended. JADE 6.2 allows Smart Thin Clients and a specialised Standard Client to run on Windows Mobile devices.


==Code examples==
==Code examples==
Line 106: Line 128:


===Hello World!===
===Hello World!===
This is the [[Hello world program|"Hello World!"]] code in JADE:
These are JADE [["Hello, World!" program]]s:
<!-- In the examples below, all HTML markup should be replaced with Wiki syntaxhighlight markup, as in the article on Modula or Pascal. -->


  helloWorld();
  helloWorld();
Line 127: Line 150:
The first version of JADE was JADE 3, released September 1996.
The first version of JADE was JADE 3, released September 1996.


The current version is JADE 7.
The current version is JADE 2025, replacing JADE 2022<ref>[https://www.jadeworld.com/jade-platform/latest-platform "Latest version"].</ref>


==See also==
==See also==
Line 138: Line 161:


==External links==
==External links==
* {{official website|http://www.jadeworld.com/}}
* {{Official website|www.jadeworld.com}}
 
===Tutorials and resources===
* [https://www.jadeworld.com/developer-center Examples and Tutorials for JADE Programmers]
* [https://www.jadeworld.com/developer-center Examples and Tutorials for JADE Programmers]
 
* [https://web.archive.org/web/20060319105508/http://www.enterprisenetworksandservers.com/monthly/art.php?1899 JADE 6.1 delivers data replication to Microsoft SQL Server]
===Media coverage===
* [http://www.enterprisenetworksandservers.com/monthly/art.php?1899 JADE 6.1 delivers data replication to Microsoft SQL Server]


[[Category:Algol programming language family]]
[[Category:Algol programming language family]]
Line 153: Line 172:
[[Category:Object-oriented programming languages]]
[[Category:Object-oriented programming languages]]
[[Category:Persistent programming languages]]
[[Category:Persistent programming languages]]
[[Category:Programming languages created in the 1990s]]
[[Category:Programming languages created in 1996]]
[[Category:Software companies of New Zealand]]
[[Category:Software companies of New Zealand]]
<!-- Hidden categories below -->
[[Category:Articles with example code]]