Recently java.nio.ByteBuffer.allocateDirect( ) changed from returning page aligned ByteBuffers to returning ByteBuffer that lacked any alignment. There is no way in Java (without using sun.misc.Unsafe or JNI) to request a page aligned buffer, so the new behaviour of java.nio.ByteBuffer.allocateDirect( ) makes it impossible to end up with said page aligned buffer.
LWJGL's BufferUtil class has been around to fix all the annoyances of ByteBuffer.allocateDirect - mainly setting the native ByteOrder, and filling a need created by the lack of methods in the Java API such as: FloatBuffer.allocateDirect. Long story short, it's there for convenience. IMHO page aligned ByteBuffers are equally a convenience that could/should be provided by LWJGL, as certain OpenGL functions simply require page aligned pointers (AMD_pinned_memory, for one). Therefore I request that LWJGL 'restores' the behaviour of ByteBuffer.allocateDirect that we enjoyed since Java 1.4, without telling everybody that the only way their application won't crash is to pass -XX:+PageAlignDirectMemory on the commandline.
Either that, or plan B:
BufferUtils.createByteBuffer(...)
BufferUtils.createFloatBuffer(...)
BufferUtils.createPageAlignedByteBuffer(...)
BufferUtils.createPageAlignedFloatBuffer(...)