I read that there was a request to make GLCanvas non-final and instantiable. I also read that it was denied, since managing open GL context’s in conjunction with Java is difficult. I can understand that a lot of issues can arise, but extending the class is a valid and useful thing to do. Right now I am using GL4Java, I use to use Magician, and am currently extending GLCanvas, to a class called Graph3D, to fix some bugs in the underlying implementation and to add a slew of capabilities. Think about registering mouse listeners to that Graph3D, it needs to be returned as the source of mouse/keyboard events. In the case that I cannot subclass GLCanvas, I have to requests for registering mouse events to the Graph3D, just pipe them to the GLCanvas, and on the way back make the source the Graph3D again, or I have to expose to the users of my API that there is this thing called a GLCanvas, which I do not think is acceptable. Especially when we are changing underlying OpenGL binding implementations like diapers on a baby. :-[
-Jason