Empecé a aprender Java EE 7 y con frecuencia me encuentro con este término "estándar", y no entiendo lo que significa.
Entonces, por ejemplo, aquí hay una cita de este libro:
Al contrario que SOAP y la pila WS- *, que se basan en los estándares W3C, REST no tiene un estándar y es solo un estilo de arquitectura con principios de diseño. Las aplicaciones REST dependen en gran medida de muchos otros estándares: HTTP, URI, URL ...
Tengo una idea de lo que eso podría significar, pero no estoy seguro.
La mejor explicación que he encontrado es la definición de aquí .
coding-standards
standards
Djole Pi
fuente
fuente
Respuestas:
El término "estándares" en la programación a menudo se refiere a una tecnología / documento que se rige por un grupo o comunidad. Los miembros de ese grupo a menudo comparten objetivos comunes de inversión, son usuarios activos de esa tecnología y desean garantizar que la tecnología continúe.
Hay muchas "cosas" en la programación que tienen una comunidad que las gobierna. Estos miembros pueden variar desde programadores hasta representación corporativa (es decir, Apple, Microsoft, IBM, etc., etc.)
W3C es un grupo muy grande que trabaja en conjunto para definir muchos estándares.
Aquí hay una lista de miembros.
http://www.w3.org/Consortium/Member/List
REST es un ejemplo de una tecnología, por su popularidad es utilizada por muchas personas, pero no existe ningún grupo o comunidad que la gobierne. Por lo tanto, no hay un solo lugar para señalar con el dedo y decir "así es como los estándares dicen que se debe hacer" .
Empresas como IBM, Microsoft y otras han publicado documentación sobre cómo implementar REST. Se podría decir que hay una "forma común" de implementar REST. Puede elegir una fuente autorizada que describa una implementación de REST y afirmar que sigue esa referencia. El uso de fuentes autorizadas es una forma en que hemos estado lidiando con los problemas de compatibilidad en los navegadores web.
fuente
Un estándar es un documento técnico que especifica cómo se comporta una tecnología. (Para algunas tecnologías, puede ser algún otro tipo de estándar técnico ). Eso es todo lo que son y por qué existen: son documentos y describen la tecnología.
Estos documentos son creados por un órgano rector que tiene la autoridad y la confianza necesarias para que puedan decidir cómo funciona esa tecnología y para que las personas se preocupen cuando publican un documento de especificación como estándar. Un organismo rector podría producir muchos estándares, para diferentes tecnologías o diferentes versiones de una tecnología. El órgano rector también podría ser conocido como mantenedores, autores, custodios, etc. de las normas.
(En contraste con lo que describe Mathew, un estándar no es el órgano de gobierno ni la tecnología en sí. Es un documento que describe la tecnología o una versión particular de la misma).
Algunos estándares de ejemplo para las tecnologías que ha mencionado (y otros):
HTML es un buen ejemplo del hecho de que las diferentes versiones de un lenguaje a menudo tendrán diferentes estándares. Las diversas versiones tienen diferentes documentos que describen cómo se deben manejar las distintas versiones del lenguaje.
Mientras tanto, HTTP es uno de los muchos ejemplos de un movimiento estándar entre grupos: primero por el Grupo de trabajo de red, luego al Grupo de trabajo de HTTP, aunque ambos grupos formaban parte del IETF. Otras tecnologías se han movido entre compañías, como HTML (nuevamente), cuya versión 2 fue creada por el IETF en RFC1866 .
¿Por qué existen los estándares?
Existen para darnos una garantía de cómo funcionarán las cosas.
La especificación HTML5 me dice cómo los diferentes navegadores manejarán y mostrarán el marcado HTML5 que escribo, suponiendo que implementen el estándar correctamente (lo que históricamente ha sido un problema). El estándar C ++ 11 me dirá cosas sobre lo que varios códigos C ++ 11 que escribo harán o no.
Del mismo modo, si estoy escribiendo un navegador, el estándar HTML5 me dirá cómo necesito manejar varias piezas de marcado HTML5 para que las personas obtengan lo que esperan. Si estoy escribiendo un compilador de C ++ 11, el estándar C ++ 11 me dirá lo que necesito hacer para implementar el lenguaje correctamente y hacer que el código de las personas funcione de la manera que esperan que funcione.
Por ejemplo, los autores de Microsoft C #. Puede descargar la especificación de lenguaje C # 5.0 por sí mismo. Este documento es una promesa de que el código C # que escriba debe comportarse como se describe en la especificación, en cualquier compilador que realmente implemente la especificación correctamente.
( Si hace cosas fuera de las especificaciones , se encuentra en un territorio indefinido y no hay ninguna garantía sobre lo que sucederá o no).
Históricamente, los estándares se remontan a cosas como roscas de tornillo , de modo que puedo tener alguna garantía de que si solicito un tornillo de tipo X, se ajustará en el orificio que he perforado y será intercambiable con otros tornillos de tipo X.
Lo que nos lleva de vuelta a la definición de la palabra "estándar" :
es decir, con lo que compara sus cosas para asegurarse de que obtendrá lo que espera.
fuente
Un estándar de tecnología es una especificación tal que se espera que dos implementaciones del mismo estándar sean interoperables o intercambiables. Ejemplos: USB, Bluetooth, Java EE7, HTTP.
Luego están los estándares "de facto": convenciones que permiten la interoperabilidad, pero sin una especificación explícita acordada. Ejemplo: el formato DOC de Microsoft ha sido históricamente un estándar de facto, ya que muchos productos podían leer y escribir DOC, pero las especificaciones canónicas no estaban disponibles (hasta mucho más tarde). Los documentos todavía se distribuían comúnmente en el formato DOC, con la expectativa de que cualquier receptor pudiera leerlo, por lo que se había convertido en un estándar de facto.
Para abordar su ejemplo específico, REST no tiene una especificación explícitamente acordada y, por lo tanto, no es un estándar verdadero y apenas un estándar de facto, ya que tiene una ambigüedad considerable en cómo debe hacerse correctamente, y no existen implementaciones dominantes que resuelve estas ambigüedades. (No estoy en contra de REST. Es una muy buena manera de construir servicios web)
fuente
Un estándar es una convención estandarizada, ya sea por una especificación formal o simplemente porque una convención común ha ganado suficiente popularidad como para ser dominante.
A
de jure standard
es una especificación publicada por un comité estándar. Algunos comités estándar son ISO, ECMA, DIN, ANSI y W3C.Algunos ejemplos
de jure standards
son el tamaño de papel A4 (estándar ISO 219), el lenguaje c # (ECMA-334), etc.El término 'de jure' rara vez se usa, y un 'estándar de jure' a menudo se llama simplemente estándar.
(fuente: wikipedia - No podría escribirlo mejor yo mismo)
Un estándar de facto no necesariamente sigue ninguna especificación formal.
Como Gudmundur Orn escribió en esta respuesta , el formato DOC de Microsoft Office era un estándar de facto. Tenía una posición dominante, y normalmente se suponía que las personas podían leer documentos de MS Word.
JSON es una bestia divertida, ya que comenzó como un estándar de facto. Sin embargo, desde entonces se ha formalizado como ECMA-404 , por lo que ahora es un 'estándar de jure'.
Sin embargo, también es el formato predominante para el intercambio de datos con API basadas en HTTP (que yo sepa), por lo que también es el 'estándar de facto' para este propósito.
fuente
Por responsabilidad legal del producto, el defecto se clasifica como diseño, fabricación o documentación. Un diseño no es defectuoso si se basa en un estándar, ya sea que ese estándar sea o no defectuoso. El estándar que se aplica es el vigente cuando se creó el producto. Un estándar puede ser un estándar publicado (ISO) o un estándar aceptado de la industria que no está publicado por la asociación de estándares. Por lo tanto, TCP / IP con todos sus defectos inherentes, como la suplantación de identidad, es un estándar y si crea una nueva tecnología como VOIP y no hace nada para proteger al usuario de problemas conocidos con la tecnología subyacente, entonces está seguro de continuar con el caos. O puedo estar equivocado y tener un defecto de documentación aquí ...
fuente