{"id":670,"date":"2006-07-27T18:20:56","date_gmt":"2006-07-28T01:20:56","guid":{"rendered":"http:\/\/www.redmonk.com\/jgovernor\/wp\/?p=670"},"modified":"2006-07-27T18:20:56","modified_gmt":"2006-07-28T01:20:56","slug":"sap-netweaver-and-the-isolated-incident-or-why-the-jcp-works","status":"publish","type":"post","link":"https:\/\/redmonk.com\/jgovernor\/sap-netweaver-and-the-isolated-incident-or-why-the-jcp-works\/","title":{"rendered":"SAP NetWeaver and the Isolated Incident or Why the JCP works"},"content":{"rendered":"<p>Well I guess I needed at least one absurdly dorky post from my two days in Walldorf. This is it.<\/p>\n<p>One of the strengths of SAP&#8217;s ABAP programming model is that it supports one process per user. If the server loses a process then only one user is affected. <\/p>\n<p>However, Java is constructed differently, which means that if a process is lost, then many users are affected.<\/p>\n<p>So what could SAP do?<\/p>\n<p>It turns out that there was some talk of new APIs, and possible Java Community Process standardisation through JSR 121 for \u201cisolation\u201d, but in the end, and this is very interesting to my mind, SAP managed to create a structure that would allow the required scale by using the c loader, to enable multiple virtual machine instances without unacceptable management overhead. Because the server is under management and NetWeaver knows exactly what is on every instance, and each instance is the same, there is no need to reload all the class libraries for each one. Load them into memory and share across every instance. This is not a single point of failure though, because each instance is self-contained.<\/p>\n<p>It&#8217;s interesting to note that the associated NetWeaver app server scale improvements only work if JEE best practice is followed. That is, if the developer doesn\u2019t use best practice, with absolute separation between application and management classes, then the application won&#8217;t perform any better. In other words unless you use JEE best practice the server advantages don\u2019t work. You could practically use it as part of the certification suite. \ud83d\ude09<\/p>\n<p>Why is this so interesting? After two years talking through approaches on the JCP \u2013 which might have led to new APIs and so on \u2013 which *might* have been standardised through the java community process, SAP took an approach that works with existing APIs and so on. A nabob of negativism might say this showed the JCP doesn\u2019t work. I think the opposite is true. The fact is SAP got what it wanted, it has a differentiated scalable JEE implementation, with no need for proprietary hooks. Nice. <\/p>\n<p>Hopefully I can get a chance to talk to some production customers when product ships in six months or so. Performance matters. But then, so does portabilty. <\/p>\n<p>Tags: <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/SAP\">SAP<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/Netweaver\">Netweaver<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/JCP\">JCP<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/dork\">dork<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/J2EE\">J2EE<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/JEE\">JEE<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/Walldorf\">Walldorf<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/isolates\">isolates<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/Java\">Java<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/scalability\">scalability<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/JSR+121\">JSR 121<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/Sun\">Sun<\/a>, <a rel=\"tag\" href=\"http:\/\/technorati.com\/tag\/ABAP\">ABAP<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Well I guess I needed at least one absurdly dorky post from my two days in Walldorf. This is it. One of the strengths of SAP&#8217;s ABAP programming model is that it supports one process per user. If the server loses a process then only one user is affected. However, Java is constructed differently, which<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[1],"tags":[],"class_list":["post-670","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9wfjh-aO","_links":{"self":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts\/670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/comments?post=670"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts\/670\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/media?parent=670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/categories?post=670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/tags?post=670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}