3 months…and you have none of the hard bits, your system doesn’t scale, and you lack the complex features (will you be able to add them? Probably not). But that’s fine if you never want it to go much beyond the current system - you’ve made the perfect choices if your system was easy to build as you wanted it, and would be hard to change: it means you’ve achieved what you were aiming at with optimal efficiency. The fact that JGF was intended to do a lot more than your site forced certain different decisions. You ought to open your mind to that possibility and pay more attention to what the differences are, and what the long-term effects of your own decisions might be, rather than casting aspersions.
I guess you think you know better than most global corporates then, who use J2EE intensively (and often exclusively) to build webpages.
I know about designing and building systems, it’s my profession. Lots of issues affected the choices behind JGF’s eventual implementation - I spent a couple of months just thinking about it before starting. With hindsight, i’d still do it much the same way again next time - although I’d be tempted not to use NIO at all, given the hassle of working around bugs and inadequacies both in NIO and in the things I was interfacing it to. e.g. it is frustrating quite how many OSS projects completely ignore NIO even today - despite my offers to several to partially convert their codebases.
Yes, my optimism that after a couple of years in production use Sun’s NIO fully worked, and that after 3 years using it in the GrexEngine I’d seen all the exceptions that mattered, was - in hindsight - largely misplaced. NIO is considerably lower quality than my previous experiences of Sun standard java API’s; they’ve not been this bad since 1.0.x IME (which were worse, IIRC). I still believe in it strongly, but it’s just not ready for production use, except in narrow deployments where you’re only hitting a small subsection of the bugs - or in situations where you have hte manpower and time to make custom workarounds each time you hit a new NIO bug.