About op4j

Where does op4j come from? Is it made or backed by any software company?

op4j is Open Source Software created by a Spanish Software Engineer called Daniel Fernández with help from another Spanish Software Engineer called Soraya Sánchez in their spare time.

It is neither made nor backed by any software (or any other type of) company, and it is offered to the public totally free of charge, both in binary and in source code forms, under the Apache License 2.0.


Why do you pronounce it ['op-ah]?

Why not?


Bending the Java spoon? Is this a kind of magic?

Yes, it's a kind of magic ;-).

The biggest problem for op4j is, strange as it seems, Java. During the long and painful development of the op4j concept, the authors felt they were achieving things that Java was simply not designed for. Java is terrific and we love it, but it is a highly bureaucratic language, strongly and statically typed, and it has been patched several times over the years in order to acquire some modern features with the requirement of not leaving legacy code behind -which has lead to some terrifying creatures like the current Generics implementation-. In this scenario, trying to bring to Java features (or more accurately, coding styles) which belonged more in the functional and dynamic programming worlds was really difficult.

This is why, realising that they were curling and twisting the language, pushing it to its limits and extracting every drop of juice it had to give, the authors felt like being bending the Java spoon. And that is what the +40K lines of code in op4j are about.

But it was worth it, wasn't it?


What is javaRuntype's relation to the op4j project?

javaRuntype [https://www.javaruntype.org] was conceived at first as a part of the op4j project, and by the same person who created op4j itself, but later during op4j's development it was decided that javaRuntype should be a project of its own as its range of application by separate was in fact quite broad.

So, javaRuntype remains today as a useful and required dependency for op4j, but it can also be used without op4j at all for several different purposes.


Does op4j offer any type of commercial support?

No, it does not.


How can I contribute to op4j?

In many ways:

  • You can write to the Team with your ideas for improving op4j.
  • You can contribute some code, write a patch for a new feature or behaviour (please, tell the project admins first about your idea so that effort can be correctly coordinated).
  • You can write articles, reviews, blog posts, etc. about op4j, showing how it works or how it integrates with other technologies.
  • You can promote op4j in your company/work and among your colleague developers.

If you want to contribute some code to op4j, please read first the page on Contributing to op4j.



What is op4j useful for?

op4j is mainly useful for developers. We say it is a developer happiness tool because its aim is to enable developers to create cleaner and more readable java code, especially auxiliary code (data conversions, structure managing, etc). In order to achieve this, op4j builds on the Fluent Interface concept and also provides a huge set of predefined functions which enable developers to perform everyday tasks in an elegant and simple manner.


Despite having read all your documentation, I still cannot imagine what is this thing useful for. Where can I find some usage examples?

First of all, congratulations on having read all the docs, you are really brave ;-).

The op4j authors maintain a blog with example recipes which can show you some practical examples and give you ideas for using op4j. It is called Bending the Java spoon and it can be reached at https://www.bendingthejavaspoon.com.


Will op4j be obsolete when Java 7 arrives?

Well, obviously if the authors believed that, we wouldn't have been working on op4j for the last couple of years ;-). The answer is no.

We have heard this comment a couple of times, always coming from people who see op4j as a library for creating closures, which it is not. Function expressions are a nice feature in op4j but -besides not being completely comparable to closures (just similar in concept)- creating functions is not the main objective of the library (although it is a nice one).

op4j tries to bring Java a little bit closer to the dynamicity of other languages by enabling coding styles more similar to the fluency of some functional languages, something we believe will not be a Java 7 feature. As will not be the several hundreds of functions for everyday tasks op4j provides out-of-the-box.

And even more: op4j works with Java version 1.5 or higher whereas Java 7's new features will only work with... well, Java 7 ;-)


I'm not interested in your fancy-styled chained operators, but I love some functions here. Can I still use op4j?

Absolutely! We understand that chained operation expressions are the trendiest and most modern feature in op4j (in the authors' opinion), but in fact that is just one of the two big features in op4j. The other one is, of course, functions. op4j includes several hundred powerful functions which can be used directly without ever creating any kind of chained expression, and we'd love you to use them that way, if that is what you prefer.

Just have a look at, for example, the amazing functions in FnString. Great time-saving functions, ready to be used!