That is correct. What you are referring to is writing and deploying custom procedures and functions to the server itself. The will then be available to call in cypher. If you are interested, here is the documentation.
That being said, the apoc library has the capability for you to define cypher and have be deployed as a custom apoc procedure or function. These can them be called from cypher. This definitely is not the same a custom procedure or function build with the Neo4j Java API, as this gives you the ability to traverse the graph and such. It is much more powerful. Anyways, may the apoc capabilities meet your needs. Note, these procedure are in the apoc extended jar.