SlideShare a Scribd company logo
TheEconomics
ofOptimJ
OptimJ is a radically new optimization modeling language designed as
a Java extension with Eclipse integration, in contrast with all existing
modeling languages that are home-brewed domain-specific languages.
OptimJ for your optimization projects means tight IT integration, much
faster time to market, less maintenance, and better runtime efficiency.
OptimJ technical overview
OptimJ™ is an extension of the Java™ programming language with language support for writing
optimization models and powerful abstractions for bulk data processing. The language is supported by
programming tools under the Eclipse™ 3.2 environment.
• OptimJ is a programming language :
o OptimJ is an extension of Java 5
o OptimJ operates directly on Java objects and can be combined with any other Java classes
o The whole Java library is directly available from OptimJ
o OptimJ is interoperable with standard Java-based programming tools such as team
collaboration, unit testing or interface design.
• OptimJ is a modeling language :
o All concepts found in modeling languages such as AIMMS™, AMPL™, GAMS™,
MOSEL™, MPL™, OPL™, etc., are expressible in OptimJ.
o OptimJ can target any optimization engine offering a C or Java API.
• OptimJ is part of a product line of numerous domain-specific Java language extensions, a novel
approach of “integration at the language level” made possible by Ateji proprietary technology.
www. .com
(C) Ateji. All rights reserved. 2008-02-24 Page 1
Simpler and faster development process
The usual approach is in two steps: prototype, then deploy
Most users of modeling languages use them only for prototyping a model. When they are satisfied with the
model, they then translate it by hand into a mainstream programming language making direct calls to the
solver API.
A modeling language is required for expressing, manipulating and above all understanding models (coding
any realistic model from scratch with low-level API calls is simply not an option). But today's modeling
languages have importants drawbacks:
– Efficiency: an extra runtime layer is required that has an important impact on performance.
– Platform compatibility: the resulting code must be executed in a specific environment, typically into a
different process.
– Data feeding and solution reporting is problematic because of differences in data types and data
formats, and require additional code for handling communication between different process. This
interface code takes time to develop, is error-prone and slow at execution.
This leads to a development process in two phases, as depicted below.
The hand translation part is complex and requires a few days work for an developer that must be expert in
both the modeling language and the programming language.
A hand translation almost invariably introduces hard to find errors; so you'd better provision some
additional time for debugging.
Updating the resulting application is problematic. Because there is no going back from the programming
language source to the modeling language source, making changes means start again from scratch and redo
part of the translation. Chances are you will stick with an out-of-date application rather than engage in a
long update process.
(C) Ateji. All rights reserved. 2008-02-24 Page 2
Modeling language
source code
Programming language
source code
1. Develop the model
2. Translate 3. Run
4. Update
With OptimJ, you prototype and deploy at once
Being an extension of Java, OptimJ is both a modeling language and programming. Compare the diagram
below with the previous one:.
In a sense, OptimJ is doing the translation for you. The code generated by the OptimJ compiler makes
direct calls to the solver API: it is as efficient as what you would have written by hand, sometimes even
more because the compiler is able to perform some high-level code optimizations that are difficult to do by
hand.
Data feeding and reporting is immediate and does not require additional code, because optimization models
directly work with your application data.
No more hand translating models into code means shorter development times, less errors, and easier
update.
Enhanced developer productivity
While major modeling languages come equipped with a house-built development environment, or no
development environment at all, OptimJ is integrated in the state-of-the-art and widely spread Eclipse
environment. This has an enormous impact on developer productivity.
Standard libraries and tools
Why learn yet another way of accessing databases, reading Excel files and designing graphical interfaces?
And how comfortable would you feel relying on an optimization engine vendor to maintain these libraries
and catch-up with the most recent advances in software technology?
When modeling with OptimJ, you have direct access to the whole set of standard Java libraries and
accompanying tools. GUI designers, XML parsers, JDBC drivers, Hibernate, Swing, Javadoc, CVS, JUnit,
you name it, all can be used with your optimization model.
(C) Ateji. All rights reserved. 2008-02-24 Page 3
OptimJ
source code
1. Develop the model
2. Run
3. Update
Direct interaction with the IT department
In any large organization, optimization projects must ultimately be embedded into a larger IT environment.
With OptimJ, your optimization team delivers standard Java class files that work directly on the application
data. Developers from different teams share and synchronize their work on a common CVS repository and
collaborate on integration testing.
State-of-the-art programming support
The OptimJ support in Eclipse offers a language-aware editor with rich features such as syntax coloring,
navigation, search, integrated debugging, etc., that are today the basic tools of any professional software
developer.
Bulk data processing
In addition to algebraic modeling features, the OptimJ language also provides powerful and concise
abstractions for bulk data processing. They prove very handy in the data preprocessing phase that is often
required before stating an optimization model. Common examples are transforming couples of arrays into
sets of couples or vice-versa, aggregating data and checking integrity constraints.
OptimJ features such as set comprehensions, list comprehensions and tuples enable writing in one single
and intuitive line complex bulk data transformation processes that would require dozens of involved loops
in Java.
(C) Ateji. All rights reserved. 2008-02-24 Page 4
Code reuse with Object-Oriented Modeling
Object-oriented languages are commonplace today in the software development landscape, and no
reasonable programmer would imagine doing without them, but today's modeling languages are still
lagging behind. OptimJ is a true object-oriented language, inheriting its object-oriented features from Java.
This Object-Oriented Modeling approach enables structuration and reuse of both models and algorithms.
A given model is easily adapted to a different application domain by abstracting away data representation
via standard OO techniques such as interfaces or proxy classes. Optimization algorithms such as column
generation need only be written once and can be reused by abstracting away the specific models and the
notion of what constitutes a pattern in a particular problem.
Fast project start-up time
All recent university graduates today in IT-related areas have a hands-on experience of Java and Eclipse.
But how many of them know the vendor-specific modeling language that comes with an optimization
engine and master its home-built software library and development environment?
Talent availability
Since OptimJ is an extension of Java with support under Eclipse, the required language learning is limited
to the extended part, and the development environment is familiar. There is no need to learn yet another
way to write 1+2 and yet another command to compile your code. Java experts can write, compile and run
their first simple optimization model in fifteen minutes.
But OptimJ is also a modeling language, representative of the algebraic modeling languages family, and an
expert in modeling will feel at ease with OptimJ in a matter of hours: the same concepts are present at the
language level and syntax is familiar.
Team work
The secret of a successful software development project is efficient team work, such as having a database
specialist and a web design expert working in close cooperation. Common software development tools and
common languages are very important in this respect because they provide the basic communication
medium.
The same is true for optimization projects and OptimJ provides this communication medium. Optimization
experts feel at ease with the optimization part of the language, while programming experts master the Java
part of the language.
They can work together and interact easily because they are using the same common language, the same
development environment, the same building tools, and share their work on a common central repository.
Fast installation and set-up
OptimJ is delivered as a standard Eclipse plug-in and is installed in a few minutes using the Eclipse plugin
manager.
(C) Ateji. All rights reserved. 2008-02-24 Page 5
Less maintenance
The later you identify bugs, the more they will cost in maintenance. Many OptimJ features help preventing
bugs or identifying them early::
– strong typing (inherited from Java) forbids ill-behaved programs
– navigation features of the development environment help grasping the overall logic of large programs
– debugging features on OptimJ source code help locating problems
In today's software applications, many bugs lie at the interface between languages, hidden in XML
configuration files or other middleware connectors. They are particularly difficult to track because
language tools such as debuggers or static analysers cannot cross the language barrier.
With OptimJ, integration is done at the language level. This means zero interfacing code and zero
configuration files, and much fewer places where hugs can hide.
No performance penalty at runtime
Current modeling languages include a runtime layer that serves purposes such as abstracting away from
differences in solver engines or implementation of advanced language features.
A runtime layer can incur a severe runtime performance penalty, typically requiring allocation of
additional memory objects for each variable or constraint of your model. Not only is this a time-consuming
operation (in some examples, stating a model can take much longer than actually solving it), but it can
quickly exhaust all the available memory. Reaching the limits of physical memory because of a runtime
layer overhead means that you simply cannot state your model, even though your solver would have been
able to solve it.
OptimJ is a full language compiler and does all its work at compile time: there is no additional runtime
layer whatsoever. This is why OptimJ is able to generate code with performances similar to what you
would obtain by hand-coding directly against a low-level solver API.
Cost-effective licencing scheme
OptimJ is reasonably priced compared to all major modeling languages, and is licensed as a programming
tool. No license is required for deployment.
No matter how many projects your developers are working on, no matter how many customer sites are
using your code, you will need only one license per developer. Your investment in OptimJ quickly pays off
over the course of a few projects.
Try OptimJ
A free evaluation version of OptimJ is available for download at www.ateji.com, with additional
technical information and numerous code samples.
Ateji helps you jump-start your first OptimJ projects by providing consulting and education services as
needed. Contact us at info@ateji.com
(C) Ateji. All rights reserved. 2008-02-24 Page 6

More Related Content

What's hot

C aptitude book
C aptitude bookC aptitude book
C aptitude book
MadipadigaYashwanth
 
Eclipse EDT - EGL Inner Workings - June 2011
Eclipse EDT - EGL Inner Workings - June 2011Eclipse EDT - EGL Inner Workings - June 2011
Eclipse EDT - EGL Inner Workings - June 2011
Will Smythe
 
Margareth lota
Margareth lotaMargareth lota
Margareth lota
maggybells
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
Kaya Ota
 
JAVA
JAVAJAVA
notes on Programming fundamentals
notes on Programming fundamentals notes on Programming fundamentals
notes on Programming fundamentals
ArghodeepPaul
 
Software programming and development
Software programming and developmentSoftware programming and development
Software programming and development
Ali Raza
 
FaSaT An Interoperable Test Automation Solution
FaSaT An Interoperable Test Automation SolutionFaSaT An Interoperable Test Automation Solution
FaSaT An Interoperable Test Automation Solution
QuEST Global (erstwhile NeST Software)
 
Coding principles
Coding principles Coding principles
Coding principles
DevAdnani
 
Cmp2412 programming principles
Cmp2412 programming principlesCmp2412 programming principles
Cmp2412 programming principles
NIKANOR THOMAS
 
Week10 final
Week10 finalWeek10 final
Week10 final
Irfan Ali Memon
 
Fundamentals of programming final santos
Fundamentals of programming final santosFundamentals of programming final santos
Fundamentals of programming final santosAbie Santos
 
Computer programming all chapters
Computer programming all chaptersComputer programming all chapters
Computer programming all chaptersIbrahim Elewah
 
What is programming what are its benefits
What is programming  what are its benefits What is programming  what are its benefits
What is programming what are its benefits
Vijay Singh Khatri
 
Stnotes doc 5
Stnotes doc 5Stnotes doc 5
Stnotes doc 5
Alok Jain
 
ASPECT ORIENTED PROGRAMING(aop)
ASPECT ORIENTED PROGRAMING(aop)ASPECT ORIENTED PROGRAMING(aop)
ASPECT ORIENTED PROGRAMING(aop)
kvsrteja
 
Principles of programming
Principles of programmingPrinciples of programming
Principles of programming
Rob Paok
 

What's hot (20)

Project
ProjectProject
Project
 
C aptitude book
C aptitude bookC aptitude book
C aptitude book
 
Eclipse EDT - EGL Inner Workings - June 2011
Eclipse EDT - EGL Inner Workings - June 2011Eclipse EDT - EGL Inner Workings - June 2011
Eclipse EDT - EGL Inner Workings - June 2011
 
Margareth lota
Margareth lotaMargareth lota
Margareth lota
 
Programming and problem solving with c++, 3rd edition
Programming and problem solving with c++, 3rd editionProgramming and problem solving with c++, 3rd edition
Programming and problem solving with c++, 3rd edition
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
 
JAVA
JAVAJAVA
JAVA
 
notes on Programming fundamentals
notes on Programming fundamentals notes on Programming fundamentals
notes on Programming fundamentals
 
Software programming and development
Software programming and developmentSoftware programming and development
Software programming and development
 
FaSaT An Interoperable Test Automation Solution
FaSaT An Interoperable Test Automation SolutionFaSaT An Interoperable Test Automation Solution
FaSaT An Interoperable Test Automation Solution
 
Coding principles
Coding principles Coding principles
Coding principles
 
Cmp2412 programming principles
Cmp2412 programming principlesCmp2412 programming principles
Cmp2412 programming principles
 
Week10 final
Week10 finalWeek10 final
Week10 final
 
Fundamentals of programming final santos
Fundamentals of programming final santosFundamentals of programming final santos
Fundamentals of programming final santos
 
Computer programming all chapters
Computer programming all chaptersComputer programming all chapters
Computer programming all chapters
 
Programming paradigms
Programming paradigmsProgramming paradigms
Programming paradigms
 
What is programming what are its benefits
What is programming  what are its benefits What is programming  what are its benefits
What is programming what are its benefits
 
Stnotes doc 5
Stnotes doc 5Stnotes doc 5
Stnotes doc 5
 
ASPECT ORIENTED PROGRAMING(aop)
ASPECT ORIENTED PROGRAMING(aop)ASPECT ORIENTED PROGRAMING(aop)
ASPECT ORIENTED PROGRAMING(aop)
 
Principles of programming
Principles of programmingPrinciples of programming
Principles of programming
 

Similar to The Economics of OptimJ

Unit 1
Unit 1Unit 1
Unit 1
ankita1317
 
Introduction to java
Introduction to  javaIntroduction to  java
Introduction to java
Kalai Selvi
 
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.docICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
AmanGunner
 
EGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL OverviewEGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL Overview
Will Smythe
 
ML Tutorial Introduction
ML Tutorial IntroductionML Tutorial Introduction
ML Tutorial Introduction
elbop
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming Languages
Ishan Monga
 
What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !
Cédric Brun
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
streambase
 
Evaluation of meta modeling tools for domain specific modeling language chnjl
Evaluation of meta modeling   tools for domain specific modeling language chnjlEvaluation of meta modeling   tools for domain specific modeling language chnjl
Evaluation of meta modeling tools for domain specific modeling language chnjl
PG Scholar
 
Java-centered Translator-based Multi-paradigm Software Development Environment
Java-centered Translator-based Multi-paradigm Software Development EnvironmentJava-centered Translator-based Multi-paradigm Software Development Environment
Java-centered Translator-based Multi-paradigm Software Development Environment
Waqas Tariq
 
PHP vs .NET vs JAVA : The Right Tech for Your Next Big Project
PHP vs .NET vs JAVA : The Right Tech for Your Next Big ProjectPHP vs .NET vs JAVA : The Right Tech for Your Next Big Project
PHP vs .NET vs JAVA : The Right Tech for Your Next Big Project
Rosalie Lauren
 
OOP Java
OOP JavaOOP Java
OOP Java
Saif Kassim
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
GREATFREE: THE JAVA APIS AND IDIOMS TO PROGRAM LARGE-SCALE DISTRIBUTED SYSTEMS
GREATFREE: THE JAVA APIS AND IDIOMS TO PROGRAM LARGE-SCALE DISTRIBUTED SYSTEMSGREATFREE: THE JAVA APIS AND IDIOMS TO PROGRAM LARGE-SCALE DISTRIBUTED SYSTEMS
GREATFREE: THE JAVA APIS AND IDIOMS TO PROGRAM LARGE-SCALE DISTRIBUTED SYSTEMS
ijait
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year project
suneel singh
 
Coolgen Shkehar
Coolgen ShkeharCoolgen Shkehar
Coolgen Shkehar
shekhar619
 

Similar to The Economics of OptimJ (20)

Unit 1
Unit 1Unit 1
Unit 1
 
Introduction to java
Introduction to  javaIntroduction to  java
Introduction to java
 
Programming
ProgrammingProgramming
Programming
 
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.docICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
ICT-DBA4 -05-0811-Apply-Object-Oriented-Programming-Language-Skills.doc
 
EGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL OverviewEGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL Overview
 
Dtacs
DtacsDtacs
Dtacs
 
ML Tutorial Introduction
ML Tutorial IntroductionML Tutorial Introduction
ML Tutorial Introduction
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming Languages
 
What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
Evaluation of meta modeling tools for domain specific modeling language chnjl
Evaluation of meta modeling   tools for domain specific modeling language chnjlEvaluation of meta modeling   tools for domain specific modeling language chnjl
Evaluation of meta modeling tools for domain specific modeling language chnjl
 
Intro1
Intro1Intro1
Intro1
 
Java-centered Translator-based Multi-paradigm Software Development Environment
Java-centered Translator-based Multi-paradigm Software Development EnvironmentJava-centered Translator-based Multi-paradigm Software Development Environment
Java-centered Translator-based Multi-paradigm Software Development Environment
 
PHP vs .NET vs JAVA : The Right Tech for Your Next Big Project
PHP vs .NET vs JAVA : The Right Tech for Your Next Big ProjectPHP vs .NET vs JAVA : The Right Tech for Your Next Big Project
PHP vs .NET vs JAVA : The Right Tech for Your Next Big Project
 
OOP Java
OOP JavaOOP Java
OOP Java
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
GREATFREE: THE JAVA APIS AND IDIOMS TO PROGRAM LARGE-SCALE DISTRIBUTED SYSTEMS
GREATFREE: THE JAVA APIS AND IDIOMS TO PROGRAM LARGE-SCALE DISTRIBUTED SYSTEMSGREATFREE: THE JAVA APIS AND IDIOMS TO PROGRAM LARGE-SCALE DISTRIBUTED SYSTEMS
GREATFREE: THE JAVA APIS AND IDIOMS TO PROGRAM LARGE-SCALE DISTRIBUTED SYSTEMS
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year project
 
Coolgen Shkehar
Coolgen ShkeharCoolgen Shkehar
Coolgen Shkehar
 
6
66
6
 

Recently uploaded

Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
varshanayak241
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
KrzysztofKkol1
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 

Recently uploaded (20)

Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 

The Economics of OptimJ

  • 1. TheEconomics ofOptimJ OptimJ is a radically new optimization modeling language designed as a Java extension with Eclipse integration, in contrast with all existing modeling languages that are home-brewed domain-specific languages. OptimJ for your optimization projects means tight IT integration, much faster time to market, less maintenance, and better runtime efficiency. OptimJ technical overview OptimJ™ is an extension of the Java™ programming language with language support for writing optimization models and powerful abstractions for bulk data processing. The language is supported by programming tools under the Eclipse™ 3.2 environment. • OptimJ is a programming language : o OptimJ is an extension of Java 5 o OptimJ operates directly on Java objects and can be combined with any other Java classes o The whole Java library is directly available from OptimJ o OptimJ is interoperable with standard Java-based programming tools such as team collaboration, unit testing or interface design. • OptimJ is a modeling language : o All concepts found in modeling languages such as AIMMS™, AMPL™, GAMS™, MOSEL™, MPL™, OPL™, etc., are expressible in OptimJ. o OptimJ can target any optimization engine offering a C or Java API. • OptimJ is part of a product line of numerous domain-specific Java language extensions, a novel approach of “integration at the language level” made possible by Ateji proprietary technology. www. .com (C) Ateji. All rights reserved. 2008-02-24 Page 1
  • 2. Simpler and faster development process The usual approach is in two steps: prototype, then deploy Most users of modeling languages use them only for prototyping a model. When they are satisfied with the model, they then translate it by hand into a mainstream programming language making direct calls to the solver API. A modeling language is required for expressing, manipulating and above all understanding models (coding any realistic model from scratch with low-level API calls is simply not an option). But today's modeling languages have importants drawbacks: – Efficiency: an extra runtime layer is required that has an important impact on performance. – Platform compatibility: the resulting code must be executed in a specific environment, typically into a different process. – Data feeding and solution reporting is problematic because of differences in data types and data formats, and require additional code for handling communication between different process. This interface code takes time to develop, is error-prone and slow at execution. This leads to a development process in two phases, as depicted below. The hand translation part is complex and requires a few days work for an developer that must be expert in both the modeling language and the programming language. A hand translation almost invariably introduces hard to find errors; so you'd better provision some additional time for debugging. Updating the resulting application is problematic. Because there is no going back from the programming language source to the modeling language source, making changes means start again from scratch and redo part of the translation. Chances are you will stick with an out-of-date application rather than engage in a long update process. (C) Ateji. All rights reserved. 2008-02-24 Page 2 Modeling language source code Programming language source code 1. Develop the model 2. Translate 3. Run 4. Update
  • 3. With OptimJ, you prototype and deploy at once Being an extension of Java, OptimJ is both a modeling language and programming. Compare the diagram below with the previous one:. In a sense, OptimJ is doing the translation for you. The code generated by the OptimJ compiler makes direct calls to the solver API: it is as efficient as what you would have written by hand, sometimes even more because the compiler is able to perform some high-level code optimizations that are difficult to do by hand. Data feeding and reporting is immediate and does not require additional code, because optimization models directly work with your application data. No more hand translating models into code means shorter development times, less errors, and easier update. Enhanced developer productivity While major modeling languages come equipped with a house-built development environment, or no development environment at all, OptimJ is integrated in the state-of-the-art and widely spread Eclipse environment. This has an enormous impact on developer productivity. Standard libraries and tools Why learn yet another way of accessing databases, reading Excel files and designing graphical interfaces? And how comfortable would you feel relying on an optimization engine vendor to maintain these libraries and catch-up with the most recent advances in software technology? When modeling with OptimJ, you have direct access to the whole set of standard Java libraries and accompanying tools. GUI designers, XML parsers, JDBC drivers, Hibernate, Swing, Javadoc, CVS, JUnit, you name it, all can be used with your optimization model. (C) Ateji. All rights reserved. 2008-02-24 Page 3 OptimJ source code 1. Develop the model 2. Run 3. Update
  • 4. Direct interaction with the IT department In any large organization, optimization projects must ultimately be embedded into a larger IT environment. With OptimJ, your optimization team delivers standard Java class files that work directly on the application data. Developers from different teams share and synchronize their work on a common CVS repository and collaborate on integration testing. State-of-the-art programming support The OptimJ support in Eclipse offers a language-aware editor with rich features such as syntax coloring, navigation, search, integrated debugging, etc., that are today the basic tools of any professional software developer. Bulk data processing In addition to algebraic modeling features, the OptimJ language also provides powerful and concise abstractions for bulk data processing. They prove very handy in the data preprocessing phase that is often required before stating an optimization model. Common examples are transforming couples of arrays into sets of couples or vice-versa, aggregating data and checking integrity constraints. OptimJ features such as set comprehensions, list comprehensions and tuples enable writing in one single and intuitive line complex bulk data transformation processes that would require dozens of involved loops in Java. (C) Ateji. All rights reserved. 2008-02-24 Page 4
  • 5. Code reuse with Object-Oriented Modeling Object-oriented languages are commonplace today in the software development landscape, and no reasonable programmer would imagine doing without them, but today's modeling languages are still lagging behind. OptimJ is a true object-oriented language, inheriting its object-oriented features from Java. This Object-Oriented Modeling approach enables structuration and reuse of both models and algorithms. A given model is easily adapted to a different application domain by abstracting away data representation via standard OO techniques such as interfaces or proxy classes. Optimization algorithms such as column generation need only be written once and can be reused by abstracting away the specific models and the notion of what constitutes a pattern in a particular problem. Fast project start-up time All recent university graduates today in IT-related areas have a hands-on experience of Java and Eclipse. But how many of them know the vendor-specific modeling language that comes with an optimization engine and master its home-built software library and development environment? Talent availability Since OptimJ is an extension of Java with support under Eclipse, the required language learning is limited to the extended part, and the development environment is familiar. There is no need to learn yet another way to write 1+2 and yet another command to compile your code. Java experts can write, compile and run their first simple optimization model in fifteen minutes. But OptimJ is also a modeling language, representative of the algebraic modeling languages family, and an expert in modeling will feel at ease with OptimJ in a matter of hours: the same concepts are present at the language level and syntax is familiar. Team work The secret of a successful software development project is efficient team work, such as having a database specialist and a web design expert working in close cooperation. Common software development tools and common languages are very important in this respect because they provide the basic communication medium. The same is true for optimization projects and OptimJ provides this communication medium. Optimization experts feel at ease with the optimization part of the language, while programming experts master the Java part of the language. They can work together and interact easily because they are using the same common language, the same development environment, the same building tools, and share their work on a common central repository. Fast installation and set-up OptimJ is delivered as a standard Eclipse plug-in and is installed in a few minutes using the Eclipse plugin manager. (C) Ateji. All rights reserved. 2008-02-24 Page 5
  • 6. Less maintenance The later you identify bugs, the more they will cost in maintenance. Many OptimJ features help preventing bugs or identifying them early:: – strong typing (inherited from Java) forbids ill-behaved programs – navigation features of the development environment help grasping the overall logic of large programs – debugging features on OptimJ source code help locating problems In today's software applications, many bugs lie at the interface between languages, hidden in XML configuration files or other middleware connectors. They are particularly difficult to track because language tools such as debuggers or static analysers cannot cross the language barrier. With OptimJ, integration is done at the language level. This means zero interfacing code and zero configuration files, and much fewer places where hugs can hide. No performance penalty at runtime Current modeling languages include a runtime layer that serves purposes such as abstracting away from differences in solver engines or implementation of advanced language features. A runtime layer can incur a severe runtime performance penalty, typically requiring allocation of additional memory objects for each variable or constraint of your model. Not only is this a time-consuming operation (in some examples, stating a model can take much longer than actually solving it), but it can quickly exhaust all the available memory. Reaching the limits of physical memory because of a runtime layer overhead means that you simply cannot state your model, even though your solver would have been able to solve it. OptimJ is a full language compiler and does all its work at compile time: there is no additional runtime layer whatsoever. This is why OptimJ is able to generate code with performances similar to what you would obtain by hand-coding directly against a low-level solver API. Cost-effective licencing scheme OptimJ is reasonably priced compared to all major modeling languages, and is licensed as a programming tool. No license is required for deployment. No matter how many projects your developers are working on, no matter how many customer sites are using your code, you will need only one license per developer. Your investment in OptimJ quickly pays off over the course of a few projects. Try OptimJ A free evaluation version of OptimJ is available for download at www.ateji.com, with additional technical information and numerous code samples. Ateji helps you jump-start your first OptimJ projects by providing consulting and education services as needed. Contact us at info@ateji.com (C) Ateji. All rights reserved. 2008-02-24 Page 6