Судебное разбирательство между Google и Oracle: анализируется происхождение нескольких строк кода

в 15:10, , рубрики: android, Google, java, oracle, суд, метки: , , ,

Многие знают, что назревающий возможный скандал между крупными игроками IT-рынка Google и Oracle, подспудной причиной которого стала популярная платформа Android, вылился в суд между корпорациями, который начался в понедельник 16 апреля. Суть претензий Oracle заключается в том, что компания, купив в 2009 году Sun Microsystems, приобрела авторские права на язык программирования Java и теперь интернет-гигант незаконно использует технологии Java в Android, нарушая, таким образом, патенты Oracle.

Не вдаваясь в подробности, собственно юридических вопросов патентного права, кажется любопытным проследить логику адвокатов Oracle в намерении доказать, что Google отнюдь не начинала с чистого листа в Android, а исходный код системы, как минимум, содержит прямые вставки непосредственно из исходного кода Java. Всего, если отметить ради интереса, Oracle обвиняет Google в копировании 103 400 строк Java-кода (подробное описание иска можно посмотреть в этом pdf-документе)

Итак, после первичного заявления адвокатов Oracle о сознательном отказе от патентных отчислений в пользу законного владельца технологий, рассмотрение вопроса стало более конкретным. В суд был приглашен Джошуа Блох, работающий в данный момент в Google и должность которого в корпорации обозначена как Chief Java Architect at Google (при этом не лишним будет отметить то обстоятельство, что Блох восемь лет проработал в Sun, перед тем как перейти на работу в интернет-гиганте).

Исходный код файла array.java содержит метод rangeCheck:

 /**
  789        * Checks that {@code fromIndex} and {@code toIndex} are in
  790        * the range and throws an appropriate exception, if they aren't.
  791        */
  792       private static void rangeCheck(int length, int fromIndex, int toIndex) {
  793           if (fromIndex > toIndex) {
  794               throw new IllegalArgumentException(
  795                   "fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")");
  796           }
  797           if (fromIndex < 0) {
  798               throw new ArrayIndexOutOfBoundsException(fromIndex);
  799           }
  800           if (toIndex > length) {
  801               throw new ArrayIndexOutOfBoundsException(toIndex);
  802           }
  803       }

В ходе судебного заседания Блох подтвердил, что именно он является автором этого программного кода, который был написан им в 1997 году. Согласно предоставленным документам, Sun лицензировала соответствующий код в 2004 году — другими словами, еще до того, как она стала собственностью Oracle.

Те же самые строки кода, содержат файлы TimSort.java и ComparableTimSort.java, включенные в состав Android, собственное авторство которых в 2007 году также подтвердил Блох. Когда ему был задан вопрос — не скопировал ли он их из кода Array.java — сначала Блох просто ответил, что не помнит. Когда же ему намекнули, что, по его собственным словам, в ходе разбирательства прошлого года по аналогичному вопросу, он ответил в том смысле, что один и тот же смысл кода и одно и тоже название говорит о том, что он, вероятно, действительно это сделал («the same order and same name is a strong indicator that it is likely that I did»), то теперь неясно, когда же он был ближе к истине и что, по сути, можно заключить по этому вопросу, отметили адвокаты, подчеркнув несколько невнятную позицию Google в этом вопросе.

Таким образом, разбирательство в суде идёт на весьма высоком уровне, когда анализируется авторство даже небольших участков программного кода, что, впрочем, не редкость для такого рода дел.

Справедливости ради стоит заметить, что Блох в конце своего выступления заметил буквально следующее: «Если я этот сделал, то это была ошибка, и мне очень жаль, что я это сделал». В Android 4.0 спорный метод rangeCheck отсутствует.

Автор: jeston

Поделиться

* - обязательные к заполнению поля