If a function is not available natively in Oracle, then having it become available via a custom Java function is a reasonable compromise! Even so, to be really useful, such code must operate correctly and efficiently.
Much has been written on the performance of PL/SQL against native SQL functionality, with some also available for Java-based stored procedures. From such work you can discover a set of guidelines for creating fast executing functions.
While little can be done about the cost to call a Java Stored Procedure from SQL (c.f., context swapping), one does have control over the efficiency of the implemented algorithm. JTS is particularly known for this, such that its algorithms are well understood. In addition methods that operate on an array or collection of geometry objects (c.f.,
ST_PolygonBuilder's processing of x and y collections), will result in faster operation than the methods that process only one geometry at a time, out of many. While...