It depends!
They are two languages for different purposes!
What kind of operations do you want to do?
- Every operations that touches data layer(I know it's debatable)
- Massive Sql operations with large data processing( bulk operations)
- To manage any kind of transaction
- The job can be easily done in Pl/Sql
- Are you writing code that is strictly tied to Sql data types?
- Monitoring the relations between the code and dependent db objects
In this case, I believe Pl/SQL is the best choice for performance.
Attention, I wrote PL/SQL:
- PL as procedure language(2nd choice)
- SQL as data query language(1st choice)
The power of this two languages, strictly tied in Oracle, let you write application which access data in Oracle in faster and easier way than in any other language.
Do you need:
- Operating system operations
- Directory and file operations
- Massive mails operations
- Network operations
- Other things you can't do in:
- SQL (1st choice)
- PL (2nd choice)
- write code to reuse in architecture like Enterprise Java Beans
- Write code to reuse elsewhere
In this case I think Java is a better choice, 3rd choice in Oracle.
But I'm not reinventing the wheel, this information are largely accessible and proved by Oracle experts like Tom Kyte etc.
Just some useful link to search: