Многие знают, что назревающий возможный скандал между крупными игроками 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