{"id":223,"date":"2003-11-28T05:23:00","date_gmt":"2003-11-28T09:23:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/?p=90"},"modified":"2003-11-28T05:23:00","modified_gmt":"2003-11-28T09:23:00","slug":"feedback-on-my-sdo-comments","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2003\/11\/feedback-on-my-sdo-comments\/","title":{"rendered":"Feedback on my SDO comments"},"content":{"rendered":"<p><a href=\"http:\/\/radio.weblogs.com\/0112098\/2003\/11\/28.html#a422\">James Strachan responds<\/a> to my\n<a href=\"http:\/\/www.markbaker.ca\/2002\/09\/Blog\/\/2003\/11\/26#2003-11-sdo\">SDO comments<\/a>\nsuggesting I missed the point.  I don&#8217;t think I did.  Perhaps James missed the\npoint of my comments. 8-)<\/p>\n\n<p>He writes;<\/p>\n\n<blockquote>\nTo help set Mark straight; Servlets are a Java API for implementing HTTP operations. (Incidentally Servlets don&#8217;t have a client side &#8211; for that you need to either use the URL class or the commons-httpclient library). So Servlets take care of the server-side part of HTTP protocol for you. To use REST speak, Servlets implement the server side of the transfer part of REST.\n<\/blockquote>\n\n<p>HttpServlets <em>do<\/em> expose a client side API, they just do it in a\nlanguage neutral way via the HTTP protocol.  I could have also compared SDO\nto java.net or HttpClient I suppose, but my argument would have been the same.<\/p>\n\n<blockquote>\nSDO on the other hand is a generic Java API for any arbitrary typesafe blob of state. It says nothing of how you fetch the state, where it comes from, what transfer\/marshalling mechanism etc. The state could come from anywhere; from parsing any XML document, calling some RESTful service, a web service, an RMI call, an EJB \/ JDO \/ JDBC \/ JNDI \/ JMX query etc.\n<\/blockquote>\n\n<p>Yes, true, just as a RESTful service could front for an EJB, JDO, JDBC, JNDI, JMX query etc.<\/p>\n\n<p>When I first reviewed it, I looked for a &#8220;smoking gun&#8221;; that thing that would\nstand out as evidence that the authors hadn&#8217;t studied the Web in sufficient\ndetail.  I didn&#8217;t see any at the time, but after having a second look I&#8217;d say\nit&#8217;s the use of XPath; SDO should have used URIs (or perhaps both) as the means\nof relating objects.  Perhaps that might help you see where I&#8217;m coming from with\nmy objections, James.<\/p>\n\n<p>Thanks for the feed\/pushback.<\/p>\n\n<p><em>Update<\/em>: James <a href=\"http:\/\/radio.weblogs.com\/0112098\/2003\/11\/28.html#a423\">responds again<\/a>.\nI think his last paragraph is all I really need to comment on;<\/p>\n\n<blockquote>\nIncidentally, the interesting thing about SDO is that the navigation mechanism is pluggable. So Mark, an SDO implementation could use URIs (or XPointer, or XQuery etc) to navigate through the data graph.\n<\/blockquote>\n\n<p>Yes, understood, but that misses the point of the Web.  URIs aren&#8217;t just another\nidentification mechanism, they are the <em>most<\/em> general identification mechanism,\nenabling other mechanisms to be defined in its terms (e.g. FTP file names engulfed via the\nftp URI scheme, email addresses engulfed via mailto: etc..).<\/p>\n<p>Sure, the Web can be treated as just another system, but as soon as you do that,\nany attempt to build a general model that includes it ends up being an attempt to\nreinvent it, because that&#8217;s what the Web is; the system of all systems.<\/p>","protected":false},"excerpt":{"rendered":"James Strachan responds to my SDO comments suggesting I missed the point. I don&#8217;t think I did. Perhaps James missed the point of my comments. 8-) He writes; To help set Mark straight; Servlets are a Java API for implementing HTTP operations. (Incidentally Servlets don&#8217;t have a client side &#8211; for that you need to [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[40],"class_list":["post-223","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-xml"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/comments?post=223"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/223\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=223"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}