It does so by bridging TC's plugin interface via JNI (Java Native Interface) and also providing adapter classes**.
IMHO it's quite a good piece of work and there's plenty of documentation provided to learn from.
However, it's a bit outdated since, and seems not to be maintained any longer.
I gave it a try by starting to write a content plugin***. Guess I should mention that this is also my first plugin for TC

Anyways, from my experience so far I see a couple of problems:
- - the provided interface is very basic (although complete), that is to say, it just doesn't "feel" very much like Java. Rather like C (yes, NOT C++!)
- you're returning integer error/success codes all the time (they're not even enums) and your real results go into "output" parameters, ie you modify things that you're being passed.
- also, when you have a sequence of things to return it's always a sequence of calls with some "no-more-things" code you are to return at the end. That really should be abstracted, eg using an iterator pattern.
- then, no generics.
- on top, the README and javadocs contain quite a number of flaws/things-out-of-date. Not too big a deal each but surely frustrating for someone new to TC plugins and/or Java.
- performance IS an issue
- ...
On the other hand, I can absolutely imagine how to build upon tc_java and provide an interface that's much more "the Java way", and, possibly, improve performance.
Also, opening up to Java people (ie really opening up) should be an overall benefit for TC and its community, IMHO. I, personally, am addicted to TC since almost the beginning and have written myself quite a bunch of utilities, but each of them I invoke from the button bar, effectively...
So then, if anyone's interested - and ideally willing to contribute - I'd make a start by
a) trying to get into contact with the original author, Ken Händel, and
b) put up a github repo
---
* see this thread: "Help with the Java API"
** by "adapter class" I mean an abstract class inheriting the relevant Java interface and providing basic default implementations of all the methods that are not absolutely necessary
*** my plugin is about NTFS ADS (Alternate Data Streams), inspired by the thread "Integrate NTFS Streams handling into TC"