There is a great reason to use Java Stored Procedures (java inside the database). Let's say that you have an application that only knows how to talk to datasources (such as Crystal Reports). Now let's say you want to integrate that application with another software application that only provides you with a Java API to extract data from. There is the perfect union. Call java stored procedures (or views on top of stored procedures) in Oracle, and then the Java code can load the data it needs out of the Java API.
Java Stored Procedures are used a lot to integrate applications that only have access to datasources (oracle, db2, odbc, etc.).