Java Vst Development

seems pretty fast to me since java numeric and numbercrunching performance can compete with native implementations. perhaps good for prototyping instruments / effects.

nice idea… but i don’t see it being too popular, unless the performance can beat c code. it should be fine for plain processing, but if you take in GUI and stuff like that, maybe not.

good for prototyping… not good for production purposes i think. but then again, it isn’t difficult to code in c either, especially if you don’t really intend to use OO.

According to the article, Java adds a 1% overhead. I think this means it should be a completely viable alternative.

well java was never meant to be a realtime programming language anyway… too many performance concerns. and what draws people to java nowadays is portability. coding style, is rather rigid, as you need to adhere to OO principles. you can do that with C++ or just stick with functional oriented programming. hence, you get the flexibility you can’t achieve in java.

that 1% will probably change for larger programs.

if someone can show me a full fledged vst in java, like absynth… i might change my mind :)

Well yeah, for all practical intents and purposes. If you want to ignore OO in an OO language like Java, just throw all the methods of the program in a single instantiated object, use no further classes or objects, and you’re done…of course, to do anything meaningful you’d have to include and use the libraries, which are all objects, so it’s not exactly practical. :P

fugly. but interesting :) good point, yeah…

dont instanciate it even, use static methods :D

Java was never meant as a realtime language? What’s that supposed to mean, exactly?

Also, the 1% is a static overhead. It clearly says so in the article.

I have no doubt that a javaprogram can run faster than a synthedit VST…
Those are slooooow!

no, apparently it’s a myth that final methods run faster :)

realtime performance applications are systems that demand critical timing deadlines to be met. java was not built for this purpose. garbage collection, bounds checking are all nice features… but they incur performance hits. and just imagine the amount of RAM for the VM. btw java is interpreted, so there - it does not run native code. one more thing - object oriented programming features like dynamic binding, polymorphism etc are pretty hard on the cpu too…

on the average, when i play with java, it’s roughly 3-8x slower than cpp. i would recommend it as a language for other purposes… it’s a good modern language, but definitely not for vst programming! (yet…)

final != static

another fact : instanciation costs time.

using static classes & methods ignoring OO (c-style, passing handles) will make your code faster (and ugly as hell)

futhermore do not use Collections. arrays are harder to handle, but also way faster. i recommend using same patterns as in assember, like an array for the stack, another array for some “registers”. global variables also make sence if you need performance (no need for method-scope allocation)

anyway… such code might be fast, but as already said, it will look pretty ugly.

They are referring to MacOS/X and Windows. Ofcourse it would also enable Linux audio tools to use these VSTi’s :D

What was the planned release date for Linoise again? ;)

So, has anyone used this thing successfully yet? None of my host apps (incl Renoise of coz) see the JayDLay plugin.

Unfortunately there aren’t even any certain plans for the Linux port yet… :(


whops yeah… final is not static…

java has bounds checking on arrays, so they also do not perform as fast as the c/cpp counterpart